else { src = malloc(size); if (src) memset(src, 0x0, size); } }
#define MS_STRING_VALID(str) \
((str != NULL && strlen(str) > 0) ? TRUE : FALSE)
+#define SAFE_STRLCPY(dst, src, n) g_strlcpy(dst, src, n);
+
int media_db_update_db(MediaDBHandle *handle, const char *query_str);
int media_db_update_db_batch_start(const char *query_str);
}
- strncpy(recv_msg->org_path, (char*)buf, recv_msg->origin_path_size);
+ SAFE_STRLCPY(recv_msg->org_path, (char*)buf, sizeof(recv_msg->org_path));
MS_SAFE_FREE(buf);
if (recv_msg->dest_path_size <= 0) {
}
- strncpy(recv_msg->dst_path, (char*)buf, recv_msg->dest_path_size);
+ SAFE_STRLCPY(recv_msg->dst_path, (char*)buf, sizeof(recv_msg->dst_path));
MS_SAFE_FREE(buf);
send_msg.msg_type = msg_type;
send_msg.msg_size = request_msg_size;
- strncpy(send_msg.msg, request_msg, request_msg_size);
+ SAFE_STRLCPY(send_msg.msg, request_msg, sizeof(send_msg.msg));
send_msg.uid = uid;
/*Create Socket*/
/*Set server Address*/
memset(&serv_addr, 0, sizeof(serv_addr));
serv_addr.sun_family = AF_UNIX;
- strncpy(serv_addr.sun_path, tzplatform_mkpath(TZ_SYS_RUN, MEDIA_IPC_PATH[sock_info.port]), strlen(tzplatform_mkpath(TZ_SYS_RUN, MEDIA_IPC_PATH[sock_info.port])));
+ SAFE_STRLCPY(serv_addr.sun_path, tzplatform_mkpath(TZ_SYS_RUN, MEDIA_IPC_PATH[sock_info.port]), sizeof(serv_addr.sun_path));
/* Connecting to the media db server */
if (connect(sockfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) {
/*Set server Address*/
memset(&serv_addr, 0, sizeof(serv_addr));
serv_addr.sun_family = AF_UNIX;
- strncpy(serv_addr.sun_path, tzplatform_mkpath(TZ_SYS_RUN, MEDIA_IPC_PATH[sock_info.port]), strlen(tzplatform_mkpath(TZ_SYS_RUN, MEDIA_IPC_PATH[sock_info.port])));
+ SAFE_STRLCPY(serv_addr.sun_path, tzplatform_mkpath(TZ_SYS_RUN, MEDIA_IPC_PATH[sock_info.port]), sizeof(serv_addr.sun_path));
/* Connecting to the media db server */
if (connect(sockfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) {
send_msg.msg_type = msg_type;
send_msg.msg_size = request_msg_size;
send_msg.uid = uid;
- strncpy(send_msg.msg, request_msg, request_msg_size);
+ SAFE_STRLCPY(send_msg.msg, request_msg, sizeof(send_msg.msg));
sockfd = __media_db_get_client_tcp_sock();
if (sockfd <= 0)
send_msg.msg_type = MS_MSG_MEDIA_DB_MALFORMED;
send_msg.msg_size = request_msg_size;
- strncpy(send_msg.msg, db_path, request_msg_size);
+ SAFE_STRLCPY(send_msg.msg, db_path, sizeof(send_msg.msg));
MS_SAFE_FREE(db_path);
send_msg.uid = uid;
memset(&serv_addr, 0, sizeof(serv_addr));
serv_addr.sun_family = AF_UNIX;
/* MSAPI_DBG_SLOG("%s", MEDIA_IPC_PATH[port]); */
- strncpy(serv_addr.sun_path, MEDIA_IPC_PATH[port], strlen(MEDIA_IPC_PATH[port]));
+ SAFE_STRLCPY(serv_addr.sun_path, MEDIA_IPC_PATH[port], sizeof(serv_addr.sun_path));
/* Connecting to the media db server */
if (connect(sockfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) {
memset(&serv_addr, 0, sizeof(serv_addr));
sock = sock_info.sock_fd;
serv_addr.sun_family = AF_UNIX;
- strncpy(serv_addr.sun_path, tzplatform_mkpath(TZ_SYS_RUN, MEDIA_IPC_PATH[sock_info.port]), strlen(tzplatform_mkpath(TZ_SYS_RUN, MEDIA_IPC_PATH[sock_info.port])));
+ SAFE_STRLCPY(serv_addr.sun_path, tzplatform_mkpath(TZ_SYS_RUN, MEDIA_IPC_PATH[sock_info.port]), sizeof(serv_addr.sun_path));
GIOChannel *channel = NULL;
channel = g_io_channel_unix_new(sock);
req_msg.pid = getpid();
req_msg.msg_type = req_manager->msg_type;
req_msg.uid = req_manager->uid;
- strncpy(req_msg.msg, req_manager->path, sizeof(req_msg.msg));
+ SAFE_STRLCPY(req_msg.msg, req_manager->path, sizeof(req_msg.msg));
req_msg.msg[strlen(req_msg.msg)] = '\0';
req_msg.msg_size = strlen(req_msg.msg) + 1;
memset(&serv_addr, 0, sizeof(serv_addr));
sock = sock_info.sock_fd;
serv_addr.sun_family = AF_UNIX;
- strncpy(serv_addr.sun_path, tzplatform_mkpath(TZ_SYS_RUN, MEDIA_IPC_PATH[sock_info.port]), strlen(tzplatform_mkpath(TZ_SYS_RUN, MEDIA_IPC_PATH[sock_info.port])));
+ SAFE_STRLCPY(serv_addr.sun_path, tzplatform_mkpath(TZ_SYS_RUN, MEDIA_IPC_PATH[sock_info.port]), sizeof(serv_addr.sun_path));
/* Connecting to the dcm service */
if (connect(sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) {
memset(&serv_addr, 0, sizeof(serv_addr));
serv_addr.sun_family = AF_UNIX;
unlink(tzplatform_mkpath(TZ_SYS_RUN, MEDIA_IPC_PATH[serv_port]));
- strncpy(serv_addr.sun_path, tzplatform_mkpath(TZ_SYS_RUN, MEDIA_IPC_PATH[serv_port]), strlen(tzplatform_mkpath(TZ_SYS_RUN, MEDIA_IPC_PATH[serv_port])));
+ SAFE_STRLCPY(serv_addr.sun_path, tzplatform_mkpath(TZ_SYS_RUN, MEDIA_IPC_PATH[serv_port]), sizeof(serv_addr.sun_path));
/* Bind to the local address */
for (i = 0; i < 100; i++) {
memset(&addr, 0, sizeof(addr));
addr.sun_family = AF_UNIX;
- strncpy(addr.sun_path, tzplatform_mkpath(TZ_SYS_RUN, MEDIA_IPC_PATH[port]), strlen(tzplatform_mkpath(TZ_SYS_RUN, MEDIA_IPC_PATH[port])));
+ SAFE_STRLCPY(addr.sun_path, tzplatform_mkpath(TZ_SYS_RUN, MEDIA_IPC_PATH[port]), sizeof(addr.sun_path));
/* Connecting to the media db server */
if (connect(sockfd, (struct sockaddr*)&addr, sizeof(addr)) < 0) {
send_msg.pid = syscall(__NR_getpid);
send_msg.msg_size = request_msg_size;
send_msg.uid = uid;
- strncpy(send_msg.msg, request_msg, request_msg_size);
- if (storage_id != NULL)
- strncpy(send_msg.storage_id, storage_id, MS_UUID_SIZE -1);
+ SAFE_STRLCPY(send_msg.msg, request_msg, sizeof(send_msg.msg));
+ if (MS_STRING_VALID(storage_id))
+ SAFE_STRLCPY(send_msg.storage_id, storage_id, sizeof(send_msg.storage_id));
/*Create Socket*/
ret = ms_ipc_create_client_socket(0, &sock_info);
send_msg.msg_type = msg_type;
send_msg.pid = syscall(__NR_getpid);
send_msg.msg_size = request_msg_size;
- strncpy(send_msg.msg, request_msg, request_msg_size);
+ SAFE_STRLCPY(send_msg.msg, request_msg, sizeof(send_msg.msg));
/*Create Socket*/
ret = ms_ipc_create_client_socket(0, &sock_info);
else { src = malloc(size); if (src) memset(src, 0x0, size); } }
#define MS_STRING_VALID(str) \
((str != NULL && strlen(str) > 0) ? TRUE : FALSE)
+#define SAFE_STRLCPY(dst, src, n) g_strlcpy(dst, src, n);
/*System default folder definition*/
#define FAT_FILENAME_LEN_MAX 255 /* not inc null */
else
filename = filename + 1;
- strncpy(cmdline, filename, PROC_NAME_MAX-1);
+ SAFE_STRLCPY(cmdline, filename, PROC_NAME_MAX);
return MS_MEDIA_ERR_NONE;
}
extract_data->uid = uid;
extract_data->result = ins_status;
extract_data->msg_size = strlen(path);
- strncpy(extract_data->msg, path, extract_data->msg_size);
- strncpy(extract_data->storage_id, storage_id, MS_UUID_SIZE-1);
+ SAFE_STRLCPY(extract_data->msg, path, sizeof(extract_data->msg));
+ SAFE_STRLCPY(extract_data->storage_id, storage_id, sizeof(extract_data->storage_id));
if (message_type == MS_MSG_STORAGE_ALL || message_type == MS_MSG_STORAGE_PARTIAL || message_type == MS_MSG_STORAGE_INVALID) {
g_async_queue_push(storage_extract_queue, GINT_TO_POINTER(extract_data));
send_msg.pid = res_data->pid;
send_msg.result = result;
send_msg.msg_size = res_data->msg_size;
- strncpy(send_msg.msg, res_data->msg, send_msg.msg_size);
+ SAFE_STRLCPY(send_msg.msg, res_data->msg, sizeof(send_msg.msg));
/* send ready message */
err = write(fd, &send_msg, sizeof(send_msg));
send_msg.pid = pid;
send_msg.result = result;
send_msg.msg_size = strlen(msg);
- strncpy(send_msg.msg, msg, send_msg.msg_size);
+ SAFE_STRLCPY(send_msg.msg, msg, sizeof(send_msg.msg));
/* send ready message */
err = write(fd, &send_msg, sizeof(send_msg));
MS_DBG("[disc path] %s", disc_path);
memset(storage_path, 0x0, sizeof(storage_path));
- strncpy(storage_path, disc_path, sizeof(storage_path)-1);
+ SAFE_STRLCPY(storage_path, disc_path, sizeof(storage_path));
if (msc_get_disc_dir_scan_status() ||
msc_get_disc_stg_scan_status()) {
send_msg.result = result;
send_msg.msg_size = res_data->msg_size;
send_msg.uid = res_data->uid;
- strncpy(send_msg.msg, res_data->msg, send_msg.msg_size);
+ SAFE_STRLCPY(send_msg.msg, res_data->msg, sizeof(send_msg.msg));
/* send ready message */
err = write(fd, &send_msg, sizeof(send_msg));
memset(&serv_addr, 0, sizeof(serv_addr));
sock = sock_info.sock_fd;
serv_addr.sun_family = AF_UNIX;
- strncpy(serv_addr.sun_path, tzplatform_mkpath(TZ_SYS_RUN, MEDIA_IPC_PATH[MS_DCM_DAEMON_PORT]), strlen(tzplatform_mkpath(TZ_SYS_RUN, MEDIA_IPC_PATH[MS_DCM_DAEMON_PORT])));
+ SAFE_STRLCPY(serv_addr.sun_path, tzplatform_mkpath(TZ_SYS_RUN, MEDIA_IPC_PATH[MS_DCM_DAEMON_PORT]), sizeof(serv_addr.sun_path));
/* Connecting to the DCM service */
if (connect(sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) {
res_msg.msg_type = recv_msg->msg_type;
res_msg.msg_size = strlen(recv_msg->msg);
if (res_msg.msg_size > 0)
- strncpy(res_msg.msg, recv_msg->msg, res_msg.msg_size);
+ SAFE_STRLCPY(res_msg.msg, recv_msg->msg, sizeof(res_msg.msg));
res_msg.result = recv_msg->result;
if (send(client_sock, &res_msg, sizeof(res_msg), 0) != sizeof(res_msg))
MS_DBG_ERR("recv_msg is NULL from queue request");
}
- strncpy(res_msg.msg, recv_msg->msg, recv_msg->msg_size);
+ SAFE_STRLCPY(res_msg.msg, recv_msg->msg, sizeof(res_msg.msg));
res_msg.msg_size = recv_msg->msg_size;
if (send(client_sock, &res_msg, sizeof(res_msg), 0) != sizeof(res_msg))
res_msg.msg_type = recv_msg->msg_type;
if (res_msg.msg_size != 0) {
res_msg.msg_size = recv_msg->msg_size;
- strncpy(res_msg.msg, recv_msg->msg, res_msg.msg_size);
+ SAFE_STRLCPY(res_msg.msg, recv_msg->msg, sizeof(res_msg.msg));
}
if (send(client_sock, &res_msg, sizeof(dcmMsg), 0) != sizeof(dcmMsg))
MS_DBG("[disc path] %s", disc_path);
memset(mnt_path, 0x0, sizeof(mnt_path));
- strncpy(mnt_path, disc_path, sizeof(mnt_path)-1);
+ SAFE_STRLCPY(mnt_path, disc_path, sizeof(mnt_path));
if (disc_state == 1) {
MS_DBG_WARN("[DISC INSERTED][%s]", disc_type);
MS_DBG("[disc path] %s", disc_path);
memset(mnt_path, 0x0, sizeof(mnt_path));
- strncpy(mnt_path, disc_path, sizeof(mnt_path)-1);
+ SAFE_STRLCPY(mnt_path, disc_path, sizeof(mnt_path));
ret = ms_load_functions();
if (ret != MS_MEDIA_ERR_NONE) {
send_msg.result = MS_MEDIA_ERR_DB_RESET;
send_msg.msg_type = MS_MSG_MEDIA_DB_RESET;
send_msg.msg_size = strlen(data->req_path);
- strncpy(send_msg.msg, data->req_path, send_msg.msg_size);
+ SAFE_STRLCPY(send_msg.msg, data->req_path, sizeof(send_msg.msg));
/* owner data exists */
/* send result to the owner of request */
/* msg_size & msg */
if (root_path != NULL) {
scan_msg.msg_size = strlen(root_path);
- strncpy(scan_msg.msg, root_path, scan_msg.msg_size);
+ SAFE_STRLCPY(scan_msg.msg, root_path, sizeof(scan_msg.msg));
}
if (storage_id != NULL) {
- strncpy(scan_msg.storage_id, storage_id, MS_UUID_SIZE-1);
+ SAFE_STRLCPY(scan_msg.storage_id, storage_id, sizeof(scan_msg.storage_id));
}
scan_msg.uid = uid;
/* msg_size & msg */
scan_msg.msg_size = strlen(path);
- strncpy(scan_msg.msg, path, scan_msg.msg_size);
- strncpy(scan_msg.storage_id, device_uuid, MS_UUID_SIZE-1);
+ SAFE_STRLCPY(scan_msg.msg, path, sizeof(scan_msg.msg));
+ SAFE_STRLCPY(scan_msg.storage_id, device_uuid, sizeof(scan_msg.storage_id));
scan_msg.uid = uid;
return MS_MEDIA_ERR_DATA_TAINTED;
}
- strncpy(msg->org_path, (char*)buf, msg->origin_path_size);
+ SAFE_STRLCPY(msg->org_path, (char*)buf, sizeof(msg->org_path));
if (msg->dest_path_size <= 0 || msg->dest_path_size > MS_FILE_PATH_LEN_MAX) {
MS_SAFE_FREE(buf);
return MS_MEDIA_ERR_DATA_TAINTED;
}
- strncpy(msg->dst_path, (char *)buf + msg->origin_path_size, msg->dest_path_size);
+ SAFE_STRLCPY(msg->dst_path, (char *)buf + msg->origin_path_size, sizeof(msg->dst_path));
MS_SAFE_FREE(msg->thumb_data);
memset(&serv_addr, 0, sizeof(serv_addr));
sock = sock_info.sock_fd;
serv_addr.sun_family = AF_UNIX;
- strncpy(serv_addr.sun_path, tzplatform_mkpath(TZ_SYS_RUN, MEDIA_IPC_PATH[MS_THUMB_DAEMON_PORT]), strlen(tzplatform_mkpath(TZ_SYS_RUN, MEDIA_IPC_PATH[MS_THUMB_DAEMON_PORT])));
+ SAFE_STRLCPY(serv_addr.sun_path, tzplatform_mkpath(TZ_SYS_RUN, MEDIA_IPC_PATH[MS_THUMB_DAEMON_PORT]), sizeof(serv_addr.sun_path));
/* Connecting to the thumbnail server */
if (connect(sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) {
res_msg.msg_type = THUMB_RESPONSE;
res_msg.status = MS_MEDIA_ERR_INTERNAL;
res_msg.origin_path_size = strlen(recv_msg->org_path);
- strncpy(res_msg.org_path, recv_msg->org_path, res_msg.origin_path_size);
+ SAFE_STRLCPY(res_msg.org_path, recv_msg->org_path, sizeof(res_msg.org_path));
res_msg.dst_path[0] = '\0';
res_msg.dest_path_size = 1;
res_msg.thumb_data = (unsigned char *)"\0";
MS_DBG_ERR("recv_msg is NULL from queue request");
}
- strncpy(res_msg.org_path, recv_msg->org_path, recv_msg->origin_path_size);
+ SAFE_STRLCPY(res_msg.org_path, recv_msg->org_path, sizeof(res_msg.org_path));
res_msg.origin_path_size = recv_msg->origin_path_size;
res_msg.dest_path_size = strlen(res_msg.dst_path) + 1;
res_msg.msg_type = THUMB_RESPONSE;
res_msg.status = MS_MEDIA_ERR_INTERNAL;
res_msg.origin_path_size = recv_msg->origin_path_size;
- strncpy(res_msg.org_path, recv_msg->org_path, res_msg.origin_path_size);
+ SAFE_STRLCPY(res_msg.org_path, recv_msg->org_path, sizeof(res_msg.org_path));
res_msg.dst_path[0] = '\0';
res_msg.dest_path_size = 1;
res_msg.thumb_size = 0;