int ms_ipc_send_msg_to_server_tcp(int sockfd, ms_msg_port_type_e port, ms_comm_msg_s *send_msg, struct sockaddr_un *serv_addr);
int ms_ipc_send_msg_to_client_tcp(int sockfd, ms_comm_msg_s *send_msg, struct sockaddr_un *client_addr);
int ms_ipc_accept_client_tcp(int serv_sock, int* client_sock);
-bool ms_ipc_is_valid_msg(const char *msg);
#ifdef __cplusplus
}
#ifndef _MEDIA_UTIL_H_
#define _MEDIA_UTIL_H_
-#include <string.h>
#include <media-util-err.h>
#include <media-util-register.h>
#include <media-util-db.h>
#endif
#define MS_SAFE_FREE(src) { if (src) {free(src); src = NULL; } }
-#define MS_STRING_VALID(str) (str && strlen(str) > 0)
#endif /*_MEDIA_UTIL_H_*/
return MS_MEDIA_ERR_IPC;
}
- MSAPI_RETVM_IF(!ms_ipc_is_valid_msg(recv_msg->msg), MS_MEDIA_ERR_IPC, "Invalid msg");
+ MSAPI_RETVM_IF(!strlen(recv_msg->msg) == 0 || strlen(recv_msg->msg) > MAX_MSG_SIZE, MS_MEDIA_ERR_IPC, "Invalid msg");
MSAPI_DBG_SLOG("receive msg from P[%d] T[%d] M[%.*s] S[%.*s]", recv_msg->pid, recv_msg->msg_type, MAX_MSG_SIZE, recv_msg->msg, MS_UUID_SIZE, recv_msg->storage_id);
char *lang = NULL;
UCollator* ucol = NULL;
- if (handle == NULL || !MS_STRING_VALID(name)) {
+ if (!handle || !name || strlen(name) == 0) {
MSAPI_DBG_ERR("Input parameter is NULL");
return;
}
struct sockaddr_un serv_addr;
int retry_count = 0;
- MSAPI_RETVM_IF(!ms_ipc_is_valid_msg(request_msg), MS_MEDIA_ERR_INVALID_PARAMETER, "Invalid request_msg");
+ MSAPI_RETVM_IF(!request_msg || strlen(request_msg) == 0, MS_MEDIA_ERR_INVALID_PARAMETER, "Invalid request_msg");
- ms_comm_msg_s send_msg;
- memset((void *)&send_msg, 0, sizeof(ms_comm_msg_s));
+ ms_comm_msg_s send_msg = { 0, };
send_msg.msg_type = msg_type;
- g_strlcpy(send_msg.msg, request_msg, sizeof(send_msg.msg));
+ if (g_strlcpy(send_msg.msg, request_msg, sizeof(send_msg.msg)) >= MAX_MSG_SIZE) {
+ MSAPI_DBG_ERR("request_msg exceeds MAX_MSG_SIZE");
+ return MS_MEDIA_ERR_INVALID_PARAMETER;
+ }
+
send_msg.uid = uid;
/*Create Socket*/
MSAPI_DBG_FUNC();
- MSAPI_RETVM_IF(!MS_STRING_VALID(query_str), MS_MEDIA_ERR_INVALID_PARAMETER, "Invalid Query");
+ MSAPI_RETVM_IF(!query_str || strlen(query_str) == 0, MS_MEDIA_ERR_INVALID_PARAMETER, "Invalid Query");
ret = __media_db_request_update_tcp(MS_MSG_DB_UPDATE, query_str, uid);
if (ret != MS_MEDIA_ERR_NONE)
MSAPI_DBG_FUNC();
- MSAPI_RETVM_IF(!MS_STRING_VALID(query_str), MS_MEDIA_ERR_INVALID_PARAMETER, "Invalid Query");
+ MSAPI_RETVM_IF(!query_str || strlen(query_str) == 0, MS_MEDIA_ERR_INVALID_PARAMETER, "Invalid Query");
ret = media_db_connect(&handle, uid, true);
MSAPI_RETVM_IF(ret != MS_MEDIA_ERR_NONE, ret, "Connect failed");
ret = ms_user_get_media_db_path(uid, &db_path);
MSAPI_RETVM_IF(ret != MS_MEDIA_ERR_NONE, MS_MEDIA_ERR_INVALID_PARAMETER, "ms_user_get_media_db_path failed");
+ MSAPI_RETVM_IF(!db_path, MS_MEDIA_ERR_INVALID_PARAMETER, "db_path is NULL");
- if (!ms_ipc_is_valid_msg(db_path)) {
- g_free(db_path);
- return MS_MEDIA_ERR_INVALID_PARAMETER;
- }
-
- ms_comm_msg_s send_msg;
- memset((void *)&send_msg, 0, sizeof(ms_comm_msg_s));
+ ms_comm_msg_s send_msg = { 0, };
send_msg.msg_type = MS_MSG_MEDIA_DB_MALFORMED;
- g_strlcpy(send_msg.msg, db_path, sizeof(send_msg.msg));
+ if (g_strlcpy(send_msg.msg, db_path, sizeof(send_msg.msg)) >= MAX_MSG_SIZE) {
+ MSAPI_DBG_ERR("db_path exceeds MAX_MSG_SIZE");
+ return MS_MEDIA_ERR_INVALID_PARAMETER;
+ }
g_free(db_path);
send_msg.uid = uid;
return MS_MEDIA_ERR_NONE;
}
-
-bool ms_ipc_is_valid_msg(const char *msg)
-{
- MSAPI_RETVM_IF(!MS_STRING_VALID(msg), false, "Invalid msg");
-
- if (strlen(msg) >= MAX_MSG_SIZE) {
- MSAPI_DBG_ERR("msg is too long. [%zu] msg size limit is [%d]", strlen(msg), MAX_MSG_SIZE);
- return false;
- }
-
- return true;
-}
return G_SOURCE_REMOVE;
}
- MSAPI_RETVM_IF(!ms_ipc_is_valid_msg(recv_msg.msg), G_SOURCE_REMOVE, "Invalid msg");
+ MSAPI_RETVM_IF(strlen(recv_msg.msg) == 0 || strlen(recv_msg.msg) > MAX_MSG_SIZE, G_SOURCE_REMOVE, "Invalid msg");
switch (recv_msg.msg_type) {
case MS_MSG_SCANNER_RESULT:
send_msg.msg_type = msg_type;
send_msg.pid = syscall(__NR_getpid);
send_msg.uid = uid;
- if (g_strlcpy(send_msg.msg, request_path, sizeof(send_msg.msg)) > MAX_MSG_SIZE) {
+ if (g_strlcpy(send_msg.msg, request_path, sizeof(send_msg.msg)) >= MAX_MSG_SIZE) {
MSAPI_DBG_ERR("path exceeds MAX_MSG_SIZE");
return MS_MEDIA_ERR_INVALID_PARAMETER;
}
- if (g_strlcpy(send_msg.storage_id, storage_id, sizeof(send_msg.storage_id)) > MS_UUID_SIZE) {
+ if (g_strlcpy(send_msg.storage_id, storage_id, sizeof(send_msg.storage_id)) >= MS_UUID_SIZE) {
MSAPI_DBG_ERR("storage_id exceeds MS_UUID_SIZE");
return MS_MEDIA_ERR_INVALID_PARAMETER;
}
send_msg.msg_type = msg_type;
send_msg.pid = syscall(__NR_getpid);
- if (g_strlcpy(send_msg.msg, request_path, sizeof(send_msg.msg)) > MAX_MSG_SIZE) {
+ if (g_strlcpy(send_msg.msg, request_path, sizeof(send_msg.msg)) >= MAX_MSG_SIZE) {
MSAPI_DBG_ERR("path exceeds MAX_MSG_SIZE");
return MS_MEDIA_ERR_INVALID_PARAMETER;
}
static bool __ms_user_is_internal(uid_t uid, const char *path)
{
- int ret = MS_MEDIA_ERR_NONE;
g_autofree gchar *internal_path = NULL;
-
- MSAPI_RETVM_IF(!MS_STRING_VALID(path), false, "Invalid path");
-
- ret = ms_user_get_internal_root_path(uid, &internal_path);
- MSAPI_RETVM_IF(ret != MS_MEDIA_ERR_NONE, false, "Fail to get internal root path");
+ ms_user_get_internal_root_path(uid, &internal_path);
return g_str_has_prefix(path, internal_path);
}
#define INTERNAL_STORAGE_ID "media"
#define STORAGE_REMOVED "storage_removed"
+#define MS_STRING_VALID(str) (str && strlen(str) > 0)
+
typedef enum {
MS_ITEM_INSERT = 0,
MS_ITEM_DELETE = 1,