#ifdef _USE_UDS_SOCKET_
int ms_ipc_send_msg_to_server(int sockfd, int port, ms_comm_msg_s *send_msg, struct sockaddr_un *serv_addr);
int ms_ipc_send_msg_to_client(int sockfd, ms_comm_msg_s *send_msg, struct sockaddr_un *client_addr);
-int ms_ipc_receive_message(int sockfd, void *recv_msg, unsigned int msg_size, struct sockaddr_un *client_addr, unsigned int *size);
-int ms_ipc_wait_message(int sockfd, void *recv_msg, unsigned int msg_size, struct sockaddr_un *recv_addr, unsigned int *size);
+int ms_ipc_receive_message(int sockfd, void *recv_msg, unsigned int msg_size, struct sockaddr_un *client_addr, unsigned int *size, int *recv_socket);
+int ms_ipc_wait_message(int sockfd, void *recv_msg, unsigned int msg_size, struct sockaddr_un *recv_addr, unsigned int *size, int connected);
#else
int ms_ipc_send_msg_to_server(int sockfd, int port, ms_comm_msg_s *send_msg, struct sockaddr_in *serv_addr);
int ms_ipc_send_msg_to_client(int sockfd, ms_comm_msg_s *send_msg, struct sockaddr_in *client_addr);
/*Create Socket*/
#ifdef _USE_UDS_SOCKET_
- ret = ms_ipc_create_client_socket(MS_PROTOCOL_UDP, MS_TIMEOUT_SEC_10, &sockfd, port);
+ ret = ms_ipc_create_client_socket(MS_PROTOCOL_TCP, MS_TIMEOUT_SEC_10, &sockfd, port);
#else
ret = ms_ipc_create_client_socket(MS_PROTOCOL_UDP, MS_TIMEOUT_SEC_10, &sockfd);
#endif
serv_addr_len = sizeof(serv_addr);
memset(&recv_msg, 0x0, sizeof(ms_comm_msg_s));
- err = ms_ipc_wait_message(sockfd, &recv_msg, sizeof(recv_msg), &serv_addr, NULL);
+ /* connected socket*/
+ err = ms_ipc_wait_message(sockfd, &recv_msg, sizeof(recv_msg), &serv_addr, NULL,TRUE);
if (err != MS_MEDIA_ERR_NONE) {
ret = err;
} else {
int cx,len;
#ifdef _USE_UDS_SOCKET_
- mode_t orig_mode;
if (tzplatform_getuid(TZ_USER_NAME) == 0 ){
cx = snprintf ( NULL, 0, MEDIA_IPC_PATH_CLIENT_ROOT[port],getpid());
buffer = (char*)malloc((cx + 1 )*sizeof(char));
snprintf ( buffer, cx + 1, MEDIA_IPC_PATH_CLIENT[port],tzplatform_getuid(TZ_USER_NAME),getpid());
}
- orig_mode = umask(0111);
#endif
if(protocol == MS_PROTOCOL_UDP)
close(sock);
#ifdef _USE_UDS_SOCKET_
free(buffer);
- umask(orig_mode);
#endif
return MS_MEDIA_ERR_SOCKET_CONN;
}
MSAPI_DBG_ERR("socket failed: %s", strerror(errno));
#ifdef _USE_UDS_SOCKET_
free(buffer);
- umask(orig_mode);
#endif
return MS_MEDIA_ERR_SOCKET_CONN;
}
close(sock);
#ifdef _USE_UDS_SOCKET_
free(buffer);
- umask(orig_mode);
#endif
return MS_MEDIA_ERR_SOCKET_CONN;
}
*sock_fd = sock;
#ifdef _USE_UDS_SOCKET_
free(buffer);
- umask(orig_mode);
#endif
return MS_MEDIA_ERR_NONE;
struct sockaddr_un serv_addr;
mode_t orig_mode;
- orig_mode = umask(0111);
/* Create a TCP socket */
if ((sock = socket(PF_FILE, SOCK_STREAM, 0)) < 0) {
unlink(MEDIA_IPC_PATH[port]);
strcpy(serv_addr.sun_path, MEDIA_IPC_PATH[port]);
+ orig_mode = umask(0);
+
/* Bind to the local address */
for (i = 0; i < 20; i ++) {
if (bind(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) == 0) {
usleep(250000);
}
+ umask(orig_mode);
+
if (bind_success == false) {
MSAPI_DBG_ERR("bind failed : %s %d_", strerror(errno), errno);
close(sock);
*sock_fd = sock;
- umask(orig_mode);
return MS_MEDIA_ERR_NONE;
}
#ifdef _USE_UDS_SOCKET_
struct sockaddr_un serv_addr;
mode_t orig_mode;
- orig_mode = umask(0111);
#else
struct sockaddr_in serv_addr;
#endif
if ((sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0) {
#endif
MSAPI_DBG_ERR("socket failed: %s", strerror(errno));
-#ifdef _USE_UDS_SOCKET_
- umask(orig_mode);
-#endif
return MS_MEDIA_ERR_SOCKET_CONN;
}
}
if ((sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) {
#endif
MSAPI_DBG_ERR("socket failed: %s", strerror(errno));
-#ifdef _USE_UDS_SOCKET_
- umask(orig_mode);
-#endif
return MS_MEDIA_ERR_SOCKET_CONN;
}
}
// serv_addr.sin_addr.s_addr = inet_addr(SERVER_IP);
serv_addr.sin_port = htons(serv_port);
#endif
+
+ orig_mode = umask(0);
+
/* Bind to the local address */
for (i = 0; i < 20; i ++) {
if (bind(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) == 0) {
usleep(250000);
}
+ umask(orig_mode);
+
if (bind_success == false) {
MSAPI_DBG_ERR("bind failed : %s %d_", strerror(errno), errno);
close(sock);
-#ifdef _USE_UDS_SOCKET_
- umask(orig_mode);
-#endif
return MS_MEDIA_ERR_SOCKET_CONN;
}
if (listen(sock, SOMAXCONN) < 0) {
MSAPI_DBG_ERR("listen failed : %s", strerror(errno));
close(sock);
-#ifdef _USE_UDS_SOCKET_
- umask(orig_mode);
-#endif
return MS_MEDIA_ERR_SOCKET_CONN;
}
}
*sock_fd = sock;
-#ifdef _USE_UDS_SOCKET_
- umask(orig_mode);
-#endif
return MS_MEDIA_ERR_NONE;
}
addr.sin_port = htons(port);
#endif
- if (sendto(sockfd, send_msg, sizeof(*(send_msg)), 0, (struct sockaddr *)&addr, sizeof(addr)) != sizeof(*(send_msg))) {
- MSAPI_DBG_ERR("sendto failed [%s]", strerror(errno));
+ if (connect(sockfd, &addr, sizeof(addr)) < 0) {
+ MSAPI_DBG_ERR("connect failed [%s]",strerror(errno));
+ return MS_MEDIA_ERR_SOCKET_SEND;
+ }
+
+ if (send(sockfd, send_msg, sizeof(*(send_msg)), 0) != sizeof(*(send_msg))) {
+ MSAPI_DBG_ERR("send failed [%s]", strerror(errno));
res = MS_MEDIA_ERR_SOCKET_SEND;
} else {
MSAPI_DBG("sent %d", send_msg->result);
#endif
{
int res = MS_MEDIA_ERR_NONE;
-
-#ifdef _USE_UDS_SOCKET_
- MSAPI_DBG("the path of client address : %s", client_addr->sun_path);
-#endif
- if (sendto(sockfd, send_msg, sizeof(*(send_msg)), 0, (struct sockaddr *)client_addr, sizeof(*(client_addr))) != sizeof(*(send_msg))) {
- MSAPI_DBG_ERR("sendto failed [%s]", strerror(errno));
+
+ if (send(sockfd, send_msg, sizeof(*(send_msg)), 0) != sizeof(*(send_msg))) {
+ MSAPI_DBG_ERR("send failed [%s]", strerror(errno));
res = MS_MEDIA_ERR_SOCKET_SEND;
} else {
MSAPI_DBG("sent %d", send_msg->result);
MSAPI_DBG("sent %s", send_msg->msg);
}
- return MS_MEDIA_ERR_NONE;
+ return res;
}
#ifdef _USE_UDS_SOCKET_
-int ms_ipc_receive_message(int sockfd, void *recv_msg, unsigned int msg_size, struct sockaddr_un *recv_addr, unsigned int *addr_size)
+int ms_ipc_receive_message(int sockfd, void *recv_msg, unsigned int msg_size, struct sockaddr_un *recv_addr, unsigned int *addr_size, int *recv_socket)
#else
int ms_ipc_receive_message(int sockfd, void *recv_msg, unsigned int msg_size, struct sockaddr_in *recv_addr, unsigned int *addr_size)
#endif
{
int recv_msg_size;
+ int client_socket = -1;
#ifdef _USE_UDS_SOCKET_
- struct sockaddr_un addr;
+ struct sockaddr_un addr, client_addr;
+ unsigned int client_addr_len;
#else
struct sockaddr_in addr;
#endif
addr_len = sizeof(struct sockaddr_in);
#endif
- if ((recv_msg_size = recvfrom(sockfd, recv_msg, msg_size, 0, (struct sockaddr *)&addr, &addr_len)) < 0) {
- MSAPI_DBG_ERR("recvfrom failed [%s]", strerror(errno));
+ if ((client_socket = accept(sockfd,(struct sockaddr *) &client_addr,(socklen_t *) &client_addr_len)) < 0) {
+ MSAPI_DBG_ERR("accept failed [%s]",strerror(errno));
+ return MS_MEDIA_ERR_SOCKET_RECEIVE;
+ }
+
+ if ((recv_msg_size = recv(client_socket, recv_msg, msg_size, 0)) < 0) {
+ MSAPI_DBG_ERR("recv failed [%s]", strerror(errno));
return MS_MEDIA_ERR_SOCKET_RECEIVE;
}
#ifdef _USE_UDS_SOCKET_
- MSAPI_DBG("the path of received client address : %s", addr.sun_path);
+ if (recv_socket != NULL)
+ *recv_socket = client_socket;
#endif
if (recv_addr != NULL)
}
#ifdef _USE_UDS_SOCKET_
-int ms_ipc_wait_message(int sockfd, void *recv_msg, unsigned int msg_size, struct sockaddr_un *recv_addr, unsigned int *addr_size)
+int ms_ipc_wait_message(int sockfd, void *recv_msg, unsigned int msg_size, struct sockaddr_un *recv_addr, unsigned int *addr_size, int connected)
#else
int ms_ipc_wait_message(int sockfd, void *recv_msg, unsigned int msg_size, struct sockaddr_in *recv_addr, unsigned int *addr_size)
#endif
int recv_msg_size;
socklen_t addr_len;
+ struct sockaddr_un client_addr;
+ unsigned int client_addr_len;
+ int client_socket = -1;
+
if (!recv_msg ||!recv_addr)
return MS_MEDIA_ERR_INVALID_PARAMETER;
addr_len = sizeof(struct sockaddr_in);
#endif
- if ((recv_msg_size = recvfrom(sockfd, recv_msg, msg_size, 0, (struct sockaddr *)recv_addr, &addr_len)) < 0) {
- MSAPI_DBG_ERR("recvfrom failed [%s]", strerror(errno));
- if (errno == EWOULDBLOCK) {
- MSAPI_DBG_ERR("recvfrom Timeout.");
- return MS_MEDIA_ERR_SOCKET_RECEIVE_TIMEOUT;
- } else {
- MSAPI_DBG_ERR("recvfrom error [%s]", strerror(errno));
+ if (connected != TRUE){
+
+ if ((client_socket = accept(sockfd,(struct sockaddr *) &client_addr,(socklen_t *) &client_addr_len)) < 0) {
+ MSAPI_DBG_ERR("accept failed [%s]",strerror(errno));
+ return MS_MEDIA_ERR_SOCKET_RECEIVE;
+ }
+ if ((recv_msg_size = recv(client_socket, recv_msg, msg_size, 0)) < 0) {
+ MSAPI_DBG_ERR("recv failed [%s]", strerror(errno));
+ return MS_MEDIA_ERR_SOCKET_RECEIVE;
+ }
+ } else {
+ if ((recv_msg_size = recv(sockfd, recv_msg, msg_size, 0)) < 0) {
+ MSAPI_DBG_ERR("recv failed [%s]", strerror(errno));
return MS_MEDIA_ERR_SOCKET_RECEIVE;
}
}
memset(&recv_msg, 0x0, sizeof(ms_comm_msg_s));
/* Socket is readable */
- ret = ms_ipc_receive_message(sockfd, &recv_msg, sizeof(recv_msg), NULL, NULL);
+ struct sockaddr_in recv_add;
+
+ ret = ms_ipc_wait_message(sockfd, &recv_msg, sizeof(recv_msg), &recv_add, NULL, TRUE);
if (ret != MS_MEDIA_ERR_NONE) {
MSAPI_DBG("ms_ipc_receive_message failed");
return TRUE;
/*Create Socket*/
#ifdef _USE_UDS_SOCKET_
- ret = ms_ipc_create_client_socket(MS_PROTOCOL_UDP, 0, &sockfd, port);
+ ret = ms_ipc_create_client_socket(MS_PROTOCOL_TCP, 0, &sockfd, port);
#else
ret = ms_ipc_create_client_socket(MS_PROTOCOL_UDP, 0, &sockfd);
#endif
}
/* Socket is readable */
- ret = ms_ipc_receive_message(sockfd, recv_msg, sizeof(*recv_msg), NULL, NULL);
+ ret = ms_ipc_receive_message(sockfd, recv_msg, sizeof(*recv_msg), NULL, NULL, NULL);
if (ret != MS_MEDIA_ERR_NONE) {
MS_SAFE_FREE(recv_msg);
return TRUE;
/*Create Socket*/
#ifdef _USE_UDS_SOCKET_
- ret = ms_ipc_create_client_socket(MS_PROTOCOL_UDP, 0, &sockfd, MS_SCAN_COMM_PORT);
+ ret = ms_ipc_create_client_socket(MS_PROTOCOL_TCP, 0, &sockfd, MS_SCAN_COMM_PORT);
#else
ret = ms_ipc_create_client_socket(MS_PROTOCOL_UDP, 0, &sockfd);
#endif
/*Create Socket*/
#ifdef _USE_UDS_SOCKET_
- ret = ms_ipc_create_client_socket(MS_PROTOCOL_UDP, 0, &sockfd, MS_SCAN_COMM_PORT);
+ ret = ms_ipc_create_client_socket(MS_PROTOCOL_TCP, 0, &sockfd, MS_SCAN_COMM_PORT);
#else
ret = ms_ipc_create_client_socket(MS_PROTOCOL_UDP, 0, &sockfd);
#endif
/*Create Socket*/
#ifdef _USE_UDS_SOCKET_
- ret = ms_ipc_create_client_socket(MS_PROTOCOL_UDP, 0, &sockfd, MS_SCAN_COMM_PORT);
+ ret = ms_ipc_create_client_socket(MS_PROTOCOL_TCP, 0, &sockfd, MS_SCAN_COMM_PORT);
#else
ret = ms_ipc_create_client_socket(MS_PROTOCOL_UDP, 0, &sockfd);
#endif
/*prepare socket*/
/* Create and bind new UDP socket */
- if (ms_ipc_create_server_socket(MS_PROTOCOL_UDP, MS_SCAN_DAEMON_PORT, &sockfd)
+ if (ms_ipc_create_server_socket(MS_PROTOCOL_TCP, MS_SCAN_DAEMON_PORT, &sockfd)
!= MS_MEDIA_ERR_NONE) {
MSC_DBG_ERR("Failed to create socket\n");
exit(0);
/* Create Socket*/
- ret = ms_ipc_create_server_socket(MS_PROTOCOL_UDP, MS_DB_UPDATE_PORT, &sockfd);
+ ret = ms_ipc_create_server_socket(MS_PROTOCOL_TCP, MS_DB_UPDATE_PORT, &sockfd);
if(ret != MS_MEDIA_ERR_NONE) {
MS_DBG_ERR("Failed to create socket\n");
_mkdir("/var/run/media-server",S_IRWXU | S_IRWXG | S_IRWXO);
/* Create and bind new UDP socket */
- if (ms_ipc_create_server_socket(MS_PROTOCOL_UDP, MS_SCANNER_PORT, &sockfd)
+ if (ms_ipc_create_server_socket(MS_PROTOCOL_TCP, MS_SCANNER_PORT, &sockfd)
!= MS_MEDIA_ERR_NONE) {
MS_DBG_ERR("Failed to create socket");
} else {
/*Create Socket*/
#ifdef _USE_UDS_SOCKET_
- ret = ms_ipc_create_server_socket(MS_PROTOCOL_UDP, MS_SCAN_COMM_PORT, &sockfd);
+ ret = ms_ipc_create_server_socket(MS_PROTOCOL_TCP, MS_SCAN_COMM_PORT, &sockfd);
if (ret != MS_MEDIA_ERR_NONE) {
MS_DBG_ERR("ms_ipc_create_server_socket failed [%d]",ret);
g_mutex_unlock(scanner_mutex);
/*Receive Response*/
serv_addr_len = sizeof(serv_addr);
- err = ms_ipc_wait_message(sockfd, &recv_msg, sizeof(recv_msg), &serv_addr, NULL);
+
+ err = ms_ipc_wait_message(sockfd, &recv_msg, sizeof(recv_msg), &serv_addr, NULL, FALSE);
if (err != MS_MEDIA_ERR_NONE) {
ret = err;
close(sockfd);
* @brief
*/
+#define _GNU_SOURCE
+
#include <arpa/inet.h>
#include <sys/types.h>
#ifdef _USE_UDS_SOCKET_
int index;
#ifdef _USE_UDS_SOCKET_
struct sockaddr_un *client_addr;
+ int client_socket;
#else
struct sockaddr_in *client_addr;
#endif
int pid;
int req_num;
int path_size;
+ int client_sock = -1;
+ struct ucred cr;
+ int cl = sizeof(struct ucred);
g_mutex_lock(scanner_mutex);
#else
client_addr_len = sizeof(struct sockaddr_in);
#endif
- ret = ms_ipc_receive_message(sockfd, &recv_msg, sizeof(recv_msg), client_addr, NULL);
+ ret = ms_ipc_receive_message(sockfd, &recv_msg, sizeof(recv_msg), client_addr, NULL, &client_sock);
if (ret != MS_MEDIA_ERR_NONE) {
MS_DBG_ERR("ms_ipc_receive_message failed");
MS_SAFE_FREE(client_addr);
return TRUE;
}
- MS_DBG("receive msg from [%d] %d, %s, uid %d", recv_msg.pid, recv_msg.msg_type, recv_msg.msg, recv_msg.uid);
+ if (getsockopt(client_sock, SOL_SOCKET, SO_PEERCRED, &cr, (socklen_t *) &cl) < 0) {
+ MS_DBG_ERR("Credentail information error");
+ }
+
+ MS_DBG("receive msg from [%d] %d, %s, uid %d", recv_msg.pid, recv_msg.msg_type, recv_msg.msg, cr.uid);
if (recv_msg.msg_size > 0 && recv_msg.msg_size < MS_FILE_PATH_LEN_MAX) {
msg_size = recv_msg.msg_size;
MS_MALLOC(owner_data, sizeof(ms_req_owner_data));
owner_data->pid = recv_msg.pid;
owner_data->client_addr = client_addr;
+ owner_data->client_socket = client_sock;
_ms_add_owner(owner_data);
scan_msg.msg_type = req_num;
scan_msg.pid = pid;
scan_msg.msg_size = msg_size;
- scan_msg.uid = recv_msg.uid;
+ scan_msg.uid = cr.uid;
ms_strcopy(scan_msg.msg, path_size, "%s", recv_msg.msg);
g_mutex_unlock(scanner_mutex);
int sockfd = MS_SOCK_NOT_ALLOCATE;
int msg_type;
int ret;
+ int client_sock = -1;
+ struct sockaddr_un client_addr;
sockfd = g_io_channel_unix_get_fd(src);
if (sockfd < 0) {
}
/* Socket is readable */
- ret = ms_ipc_receive_message(sockfd, &recv_msg, sizeof(recv_msg), NULL, NULL);
+ ret = ms_ipc_receive_message(sockfd, &recv_msg, sizeof(recv_msg), &client_addr, NULL, NULL);
if (ret != MS_MEDIA_ERR_NONE) {
MS_DBG_ERR("ms_ipc_receive_message failed [%s]", strerror(errno));
return TRUE;
/* owner data exists */
/* send result to the owner of request */
- ms_ipc_send_msg_to_client(sockfd, &recv_msg, owner_data->client_addr);
-
+ ms_ipc_send_msg_to_client(owner_data->client_socket, &recv_msg, owner_data->client_addr);
/* free owner data*/
_ms_delete_owner(owner_data);
}
/*Create Socket*/
#ifdef _USE_UDS_SOCKET_
- ret = ms_ipc_create_client_socket(MS_PROTOCOL_UDP, 0, &sockfd, MS_SCAN_DAEMON_PORT);
+ ret = ms_ipc_create_client_socket(MS_PROTOCOL_TCP, 0, &sockfd, MS_SCAN_DAEMON_PORT);
#else
ret = ms_ipc_create_client_socket(MS_PROTOCOL_UDP, 0, &sockfd);
#endif
.msg_size = 0,
.msg = {0},
};
-
- scan_msg.uid = tzplatform_getuid(TZ_USER_NAME);
/* msg_type */
switch (scan_type) {
ms_comm_msg_s recv_msg;
int send_msg = MS_MEDIA_ERR_NONE;
int sockfd = MS_SOCK_NOT_ALLOCATE;
+ int client_sock = -1;
int ret = MS_MEDIA_ERR_NONE;
MediaDBHandle *db_handle = NULL;
ms_comm_msg_s msg;
char * sql_query = NULL;
+ uid_t uid;
+ struct ucred cr;
+ int cl = sizeof(struct ucred);
memset(&recv_msg, 0, sizeof(recv_msg));
return TRUE;
}
- ret = ms_ipc_receive_message(sockfd, &recv_msg, sizeof(recv_msg), &client_addr, NULL);
+ ret = ms_ipc_receive_message(sockfd, &recv_msg, sizeof(recv_msg), &client_addr, NULL, &client_sock);
if (ret != MS_MEDIA_ERR_NONE) {
MS_DBG_ERR("ms_ipc_receive_message failed");
return TRUE;
// MS_DBG("msg_type[%d], msg_size[%d] msg[%s]", recv_msg.msg_type, recv_msg.msg_size, recv_msg.msg);
+ if (getsockopt(client_sock, SOL_SOCKET, SO_PEERCRED, &cr, (socklen_t *) &cl) < 0) {
+ MS_DBG_ERR("credential information error");
+ }
+
+ if ( getuid() == cr.uid ){
+ uid = recv_msg.uid;
+ } else {
+ uid = cr.uid;
+ }
+
if((recv_msg.msg_size <= 0) ||(recv_msg.msg_size > MS_FILE_PATH_LEN_MAX) || (!MS_STRING_VALID(recv_msg.msg))) {
MS_DBG_ERR("invalid query. size[%d]", recv_msg.msg_size);
return TRUE;
}
- media_db_connect(&db_handle, recv_msg.uid);
+ media_db_connect(&db_handle, uid);
sql_query = strndup(recv_msg.msg, recv_msg.msg_size);
if (sql_query != NULL) {
memset(&msg, 0x0, sizeof(ms_comm_msg_s));
msg.result = send_msg;
- ms_ipc_send_msg_to_client(sockfd, &msg, &client_addr);
+ ms_ipc_send_msg_to_client(client_sock, &msg, &client_addr);
media_db_disconnect(db_handle);
int ret = MS_MEDIA_ERR_NONE;
char * sql_query = NULL;
MediaDBHandle *db_handle = NULL;
-
+ uid_t uid;
+ struct ucred cr;
+ int cl = sizeof(struct ucred);
+
sock = g_io_channel_unix_get_fd(src);
if (sock < 0) {
MS_DBG_ERR("sock fd is invalid!");
return TRUE;
}
+ if (getsockopt(client_sock, SOL_SOCKET, SO_PEERCRED, &cr, (socklen_t *) &cl) < 0) {
+ MS_DBG_ERR("credential information error");
+ }
+
+ if ( getuid() == cr.uid ){
+ uid = recv_msg.uid;
+ } else {
+ uid = cr.uid;
+ }
+
sql_query = strndup(recv_msg.msg, recv_msg.msg_size);
if (sql_query != NULL) {
- media_db_connect(&db_handle, recv_msg.uid);
+ media_db_connect(&db_handle, uid);
if (recv_msg.msg_type == MS_MSG_DB_UPDATE_BATCH_START) {
ret = media_db_update_db_batch_start(sql_query);
} else if(recv_msg.msg_type == MS_MSG_DB_UPDATE_BATCH_END) {
*
*/
+#define _GNU_SOURCE
+
#include <dirent.h>
#include <errno.h>
unsigned char *buf = NULL;
buf = (unsigned char*)malloc(sizeof(thumbMsg));
-
- recv_msg_len = ms_ipc_wait_message(sock, buf, sizeof(thumbMsg), from_addr, &from_addr_size);
+
+ recv_msg_len = ms_ipc_wait_message(sock, buf, sizeof(thumbMsg), from_addr, &from_addr_size, TRUE);
if (recv_msg_len != MS_MEDIA_ERR_NONE) {
MS_DBG_ERR("ms_ipc_wait_message failed : %s", strerror(errno));
MS_SAFE_FREE(buf);
ms_thumb_server_msg recv_msg;
int recv_msg_size = 0;
- recv_msg_size = ms_ipc_receive_message(g_communicate_sock, & recv_msg, sizeof(ms_thumb_server_msg), NULL, NULL);
+ recv_msg_size = ms_ipc_receive_message(g_communicate_sock, & recv_msg, sizeof(ms_thumb_server_msg), NULL, NULL, NULL);
if (recv_msg_size != MS_MEDIA_ERR_NONE) {
MS_DBG_ERR("ms_ipc_receive_message failed : %s\n", strerror(errno));
return FALSE;
ms_thumb_server_msg recv_msg;
int recv_msg_size = 0;
- recv_msg_size = ms_ipc_receive_message(sockfd, &recv_msg, sizeof(ms_thumb_server_msg), NULL, NULL);
+ recv_msg_size = ms_ipc_receive_message(sockfd, &recv_msg, sizeof(ms_thumb_server_msg), NULL, NULL, NULL);
if (recv_msg_size != MS_MEDIA_ERR_NONE) {
MS_DBG_ERR("ms_ipc_receive_message failed : %s\n", strerror(errno));
return FALSE;
int header_size = 0;
int sock = -1;
int client_sock = -1;
-
+ struct ucred cr;
+ int cl = sizeof(struct ucred);
+
sock = g_io_channel_unix_get_fd(src);
if (sock < 0) {
MS_DBG_ERR("sock fd is invalid!");
return TRUE;
}
- MS_DBG("Received [%d] %s(%d) from PID(%d) \n", recv_msg->msg_type, recv_msg->org_path, strlen(recv_msg->org_path), recv_msg->pid);
+ if (getsockopt(client_sock, SOL_SOCKET, SO_PEERCRED, &cr, (socklen_t *) &cl) < 0) {
+ MS_DBG_ERR("credential information error");
+ }
+
+ if ( getuid() != cr.uid ){
+ recv_msg->uid = cr.uid;
+ }
thumbRequest *thumb_req = NULL;
thumb_req = calloc(1, sizeof(thumbRequest));
serv_port = MS_THUMB_COMM_PORT;
- if (ms_ipc_create_server_socket(MS_PROTOCOL_UDP, serv_port, &sock) < 0) {
+ if (ms_ipc_create_server_socket(MS_PROTOCOL_TCP, serv_port, &sock) < 0) {
MS_DBG_ERR("ms_ipc_create_server_socket failed");
return FALSE;
}