Fix build warnings 85/243385/1
authoradhavan.m <adhavan.m@samsung.com>
Mon, 7 Sep 2020 07:51:46 +0000 (13:21 +0530)
committeradhavan.m <adhavan.m@samsung.com>
Mon, 7 Sep 2020 07:51:46 +0000 (13:21 +0530)
Change-Id: I8b3e113c21eed349a65d08fed32684cb096c4698
Signed-off-by: adhavan.m <adhavan.m@samsung.com>
src/default_plugin.h [changed mode: 0644->0755]
src/default_plugin_shellcmd.c
src/plugin.h [changed mode: 0644->0755]
src/sdb.c [changed mode: 0644->0755]
src/services.c [changed mode: 0644->0755]
src/subprocess.c [changed mode: 0644->0755]

old mode 100644 (file)
new mode 100755 (executable)
index d8ac7f9..031ea86
@@ -23,12 +23,14 @@ int get_plugin_capability ( parameters* in, parameters* out );
 int verify_shell_cmd ( parameters* in, parameters* out );
 int convert_shell_cmd ( parameters* in, parameters* out );
 int verify_peer_ip ( parameters* in, parameters* out );
+int verify_peer_ipv6 ( parameters* in, parameters* out );
 int verify_sdbd_launch ( parameters* in, parameters* out );
 int verify_root_cmd ( parameters* in, parameters* out );
 int get_lock_state ( parameters* in, parameters* out );
 int get_shell_env ( parameters* in, parameters* out );
 int verify_push ( parameters* in, parameters* out );
 int verify_pull ( parameters* in, parameters* out );
+int verify_handle_by_plugin ( parameters* in, parameters* out );
 
 int auth_support ( parameters* in, parameters* out );
 int auth_get_key_file_paths ( parameters* in, parameters* out );
index 7e5bf2b..7bfeb99 100755 (executable)
@@ -20,6 +20,7 @@
 #include "log.h"
 #include "parameter.h"
 #include "sdbd_plugin.h"
+#include "transport.h"
 
 #define SHELLCMD_RESULT_BUFSIZE   (4096)
 
old mode 100644 (file)
new mode 100755 (executable)
index 1b2ccbe..6db5f65
@@ -45,15 +45,32 @@ int request_capability_to_plugin ( int cap, char* out_buf, unsigned int out_len
 // return 0 if disallowed by plugin (invalid)
 int request_validity_to_plugin ( int cmd, const char* in_buf );
 
+// return 1 if allowed by plugin (valid)
+// return 0 if disallowed by plugin (invalid)
+int request_extcmd_validity_to_plugin ( int cmd, const char* in_buf);
+
 // return 1 if succeed to convert
 // return 0 otherwise
 int request_conversion_to_plugin ( int cmd, const char* in_buf, char* out_buf, unsigned int out_len );
 
+// return 1 if succeed to convert
+// return 0 otherwise
+int request_extcmd_conversion_to_plugin ( int cmd, const char* in_buf, char* out_buf, unsigned int out_len );
+
 // return 1 if locked
 // return 0 if unlocked
 // return -1 if request failed
 int request_lock_state_to_plugin ( int lock_type );
 
+// return 1 if shell command handled by plugin (handle)
+// return 0 if shell command not handled by plugin (not handle)
+int request_handlecmd_to_plugin ( int cmd, const char* in_buf );
+
+// return nonnegative integer that is a socket descriptor for communication
+//        with async proc thread if success to create async proc thread
+// return -1 if failed to create async proc thread
+int request_shellcmd_to_plugin ( const char* in_buf );
+
 // return nonnegative integer that is a socket descriptor for communication
 //        with async proc thread if success to create async proc thread
 // return -1 if failed to create async proc thread
old mode 100644 (file)
new mode 100755 (executable)
index d16a437..2732b81
--- a/src/sdb.c
+++ b/src/sdb.c
@@ -252,7 +252,8 @@ static char* get_sdb_log_conf(const char* key)
             if (end != NULL) {
                 strncpy(value, start, end - start);
             } else {
-                strncpy(value, start, sizeof(value));
+                strncpy(value, start, sizeof(value) - 1);
+                value[sizeof(value) - 1] = '\0';
             }
         } else {
             sdb_close(fd);
@@ -557,10 +558,10 @@ int handle_encr_packet(apacket* p, atransport *t){
         enc_p->msg.arg1 = p->msg.arg1;
         if(t->encryption == ENCR_ON){ // 암호화 모드가 on인 경우
             enc_p->msg.data_length = 13;
-            strncpy((char*)enc_p->data, "encryption:on", enc_p->msg.data_length); // encryption:on 메시지 전송
+            strncpy((char*)enc_p->data, "encryption:on", enc_p->msg.data_length + 1); // encryption:on 메시지 전송
         } else if(t->encryption == ENCR_OFF){ // 암호화 모드가 off인 경우
             enc_p->msg.data_length = 14;
-            strncpy((char*)enc_p->data, "encryption:off", enc_p->msg.data_length); // encryption:off 메시지 전송
+            strncpy((char*)enc_p->data, "encryption:off", enc_p->msg.data_length + 1); // encryption:off 메시지 전송
         }
         send_packet(enc_p, t);
     }
@@ -634,7 +635,7 @@ static void send_connect(atransport *t)
     if (extcmd != NULL) {
         char extbuf[BUF_SIZE] = {0,};
         snprintf(extbuf, sizeof extbuf, "::%s", extcmd);
-        strncat((char*) cp->data, extbuf, sizeof(cp->data) - strlen(cp->data)- 1);
+        strncat((char*) cp->data, extbuf, sizeof(cp->data) - strlen((const char*)cp->data)- 1);
     }
     cp->msg.data_length = strlen((char*) cp->data) + 1;
     D("CNXN data: %s\n", (char*)cp->data);
@@ -1690,6 +1691,7 @@ static int init_sdk_userinfo() {
     return 0;
 }
 
+#if 0
 static int safe_system(char *cmd, char *argv[], char *envp[]) {
     pid_t pid;
     int status;
@@ -1712,6 +1714,7 @@ static int safe_system(char *cmd, char *argv[], char *envp[]) {
     }
     return 0;
 }
+#endif
 
 static void init_sdk_requirements() {
     // set env variable for temporary
old mode 100644 (file)
new mode 100755 (executable)
index a6d9e90..6beb905
@@ -60,6 +60,8 @@ struct stinfo {
     void *cookie;
 };
 
+extern int create_async_extcmd_proc_thread( int cmd, parameters* in );
+
 void *service_bootstrap_func(void *x)
 {
     stinfo *sti = x;
@@ -897,7 +899,7 @@ static int create_syncproc_thread(const char *cmd)
 {
     int ret_fd;
 
-    ret_fd = create_sync_subprocess(file_sync_service, cmd);
+    ret_fd = create_sync_subprocess(file_sync_service, (void*)cmd);
     // FIXME: file missing bug when root on mode
     /*
     if (should_drop_privileges()) {
@@ -1419,7 +1421,7 @@ int request_extcmd_to_plugin(const char* in_buf) {
         full_cmd[ENV_BUF_MAX - 1] = '\0';
     }
     else {
-        strncat(full_cmd, cmd_name, strlen(cmd_name));
+        strncat(full_cmd, cmd_name, ENV_BUF_MAX - 1);
     }
 
     int i = 1;
@@ -1431,7 +1433,7 @@ int request_extcmd_to_plugin(const char* in_buf) {
             break;
         }
         strncat(full_cmd, " ",1);
-        strncat(full_cmd, tokens[i], strlen(tokens[i]));
+        strncat(full_cmd, tokens[i], ENV_BUF_MAX - 1);
     }
     D("full extcmd: %s\n", full_cmd);
     if (!strcmp(exec_type, "sync")) {
old mode 100644 (file)
new mode 100755 (executable)
index 6d7d847..7ad8529
@@ -161,7 +161,9 @@ int main (int argc, char **argv, char **envp)
         }
         memset(&addr, 0, sizeof(addr));
         addr.sun_family = AF_LOCAL;
-        strncpy(addr.sun_path, sockpath, strlen(sockpath)+1);
+        int len = sizeof(addr.sun_path) - 1;
+        strncpy(addr.sun_path, sockpath, len);
+        addr.sun_path[len] = '\0';
         int slen = offsetof(struct sockaddr_un, sun_path) + strlen(sockpath);
         if (bind(sock, (struct sockaddr *)&addr, slen) == -1) {
             fprintf(stderr, "sdbu socket bind error, %d\n", errno);