#include <sys/un.h>
#include <netinet/in.h>
#include <arpa/inet.h>
+#include <stdbool.h>
#include "media-server-ipc.h"
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
}
return MS_MEDIA_ERR_IPC;
}
- 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);
+ MSAPI_RETVM_IF(!ms_ipc_is_valid_msg(recv_msg->msg), MS_MEDIA_ERR_IPC, "Invalid msg");
- if (strlen(recv_msg->msg) == 0 || strlen(recv_msg->msg) >= MAX_MSG_SIZE) {
- MSAPI_DBG_ERR("IPC message is wrong. message size is over MAX_MSG_SIZE");
- return MS_MEDIA_ERR_IPC;
- }
+ 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);
if (strlen(recv_msg->storage_id) >= MS_UUID_SIZE) {
MSAPI_DBG_ERR("IPC message is wrong. storage_id size is over MS_UUID_SIZE");
static int __media_db_request_update_tcp(ms_msg_type_e msg_type, const char *request_msg, uid_t uid)
{
int ret = MS_MEDIA_ERR_NONE;
- int request_msg_size = 0;
int sockfd = -1;
struct sockaddr_un serv_addr;
int retry_count = 0;
- if (!MS_STRING_VALID(request_msg)) {
- MSAPI_DBG_ERR("invalid query");
- return MS_MEDIA_ERR_INVALID_PARAMETER;
- }
-
- request_msg_size = strlen(request_msg);
- if (request_msg_size >= MAX_MSG_SIZE) {
- MSAPI_DBG_ERR("Too long query[%d] limit[%d]", request_msg_size, MAX_MSG_SIZE);
- return MS_MEDIA_ERR_INVALID_PARAMETER;
- }
+ MSAPI_RETVM_IF(!ms_ipc_is_valid_msg(request_msg), MS_MEDIA_ERR_INVALID_PARAMETER, "Invalid request_msg");
ms_comm_msg_s send_msg;
memset((void *)&send_msg, 0, sizeof(ms_comm_msg_s));
static int __media_db_request_recovery(uid_t uid)
{
int ret = MS_MEDIA_ERR_NONE;
- int request_msg_size = 0;
int sockfd = -1;
struct sockaddr_un serv_addr;
int retry_count = 0;
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");
- request_msg_size = strlen(db_path);
- if (request_msg_size >= MAX_MSG_SIZE) {
- MSAPI_DBG_ERR("Too long query[%d] limit[%d]", request_msg_size, MAX_MSG_SIZE);
+ if (!ms_ipc_is_valid_msg(db_path)) {
MS_SAFE_FREE(db_path);
return MS_MEDIA_ERR_INVALID_PARAMETER;
}
- /* MSAPI_DBG("querysize[%d] query[%s]", request_msg_size, request_msg); */
-
ms_comm_msg_s send_msg;
memset((void *)&send_msg, 0, sizeof(ms_comm_msg_s));
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;
+}
MSAPI_DBG_STRERROR("recv failed");
return G_SOURCE_REMOVE;
}
- if (strlen(recv_msg.msg) > 0 && strlen(recv_msg.msg) < MAX_MSG_SIZE) {
- req_result.complete_path = g_strdup(recv_msg.msg);
- MSAPI_DBG("complete_path :%s", req_result.complete_path);
- } else {
- MSAPI_DBG("The message is invalid!");
- return G_SOURCE_REMOVE;
- }
+ MSAPI_RETVM_IF(!ms_ipc_is_valid_msg(recv_msg.msg), G_SOURCE_REMOVE, "Invalid msg");
+
+ req_result.complete_path = g_strdup(recv_msg.msg);
req_result.pid = recv_msg.pid;
req_result.result = recv_msg.result;
+ MSAPI_DBG("complete_path :%s", req_result.complete_path);
+
switch (recv_msg.msg_type) {
case MS_MSG_SCANNER_RESULT:
req_result.request_type = MEDIA_DIRECTORY_SCAN;
ms_comm_msg_s send_msg;
char *request_path = NULL;
- if (!MS_STRING_VALID(request_msg)) {
- MSAPI_DBG_ERR("invalid query");
- return MS_MEDIA_ERR_INVALID_PARAMETER;
- }
+ MSAPI_RETVM_IF(!ms_ipc_is_valid_msg(request_msg), MS_MEDIA_ERR_INVALID_PARAMETER, "Invalid request_msg");
MSAPI_DBG("REQUEST UPDATE ASYNC [%d][%s]", msg_type, request_msg);
request_msg_size = strlen(request_msg);
- if (request_msg_size >= MAX_MSG_SIZE) {
- MSAPI_DBG_ERR("Query is Too long. [%d] query size limit is [%d]", request_msg_size, MAX_MSG_SIZE);
- return MS_MEDIA_ERR_INVALID_PARAMETER;
- }
-
if (request_msg[request_msg_size - 1] == '/') {
request_path = g_strndup(request_msg, request_msg_size - 1);
request_msg_size = request_msg_size - 1;
ms_comm_msg_s send_msg;
char *request_path = NULL;
- if (!MS_STRING_VALID(request_msg)) {
- MSAPI_DBG_ERR("invalid query");
- return MS_MEDIA_ERR_INVALID_PARAMETER;
- }
+ MSAPI_RETVM_IF(!ms_ipc_is_valid_msg(request_msg), MS_MEDIA_ERR_INVALID_PARAMETER, "Invalid request_msg");
MSAPI_DBG("REQUEST CANCEL DIRECTORY SCANNING[%s]", request_msg);
request_msg_size = strlen(request_msg);
- if (request_msg_size >= MAX_MSG_SIZE) {
- MSAPI_DBG_ERR("Too long msg:query length[%d] limit[%d]", request_msg_size, MAX_MSG_SIZE);
- return MS_MEDIA_ERR_INVALID_PARAMETER;
- }
-
if (request_msg[request_msg_size - 1] == '/') {
request_path = g_strndup(request_msg, request_msg_size - 1);
request_msg_size = request_msg_size - 1;