Fix SVACE issues 95/198995/4 accepted/tizen/unified/20190211.060129 submit/tizen/20190205.121525
authorVyacheslav Cherkashin <v.cherkashin@samsung.com>
Thu, 31 Jan 2019 13:48:07 +0000 (16:48 +0300)
committerVyacheslav Cherkashin <v.cherkashin@samsung.com>
Tue, 5 Feb 2019 11:10:04 +0000 (14:10 +0300)
- add safe cast ssize_t to uint64_t
- fix call logs at the wrong time
- add check return code for remove()

Change-Id: Id864d60dfe5d55ee7a1e201d983a9afb5128ad2b
Signed-off-by: Vyacheslav Cherkashin <v.cherkashin@samsung.com>
helper/libdaprobe.c
probe_screenshot/dacapture_wayland.c
probe_socket/libdasocket.c

index 283cde1..2c6dab1 100755 (executable)
@@ -246,12 +246,8 @@ static int create_socket(void)
        client_len = sizeof(client_addr);
        if (connect(gTraceInfo.socket.daemonSock,
                    (struct sockaddr *)&client_addr, client_len) < 0) {
-
                close(gTraceInfo.socket.daemonSock);
                gTraceInfo.socket.daemonSock = -1;
-               strerror_r(errno, strerr_buf, sizeof(strerr_buf));
-               PRINTERR("cannot connect to da_manager. err <%s>\n",
-                        strerr_buf);
                ret = -1;
                goto create_sock_done;
        }
@@ -271,9 +267,9 @@ static int create_socket(void)
 
                ret = read_log(gTraceInfo.socket.daemonSock, &log);
                if (ret) {
+                       PRINTERR("closed by other peer");
                        close(gTraceInfo.socket.daemonSock);
                        gTraceInfo.socket.daemonSock = -1;
-                       PRINTERR("closed by other peer\n");
                        application_exit();
                        return -1;
                }
@@ -296,7 +292,6 @@ static int create_socket(void)
        PRINTMSG("create_socket connect() success\n");
 
 create_sock_done:
-       PRINTMSG("socket create done with result = %d", ret);
        return ret;
 }
 
@@ -443,9 +438,9 @@ static void *recv_thread(void __unused * data)
 
                        ret = read_log(gTraceInfo.socket.daemonSock, &log);
                        if (ret) {
+                               PRINTERR("Invalid log format: ret=%d", ret);
                                close(gTraceInfo.socket.daemonSock);
                                gTraceInfo.socket.daemonSock = -1;
-                               PRINTERR("Invalid log format: ret=%d", ret);
                                return NULL;
                        }
 
index 041e747..b54c20d 100755 (executable)
@@ -714,7 +714,8 @@ int captureScreen()
        }
 
        ret = screenshot_send_to_socket(dstpath);
-       remove(dstpath);
+       if (remove(dstpath) == -1)
+               LOGE("Cannot remove file: %s, errno=%d", dstpath, errno);
 
 unlock:
        pthread_mutex_unlock(&captureScreenLock);
index 0cc515b..6f4f900 100644 (file)
 
 #define OBJ_DUMMY 0
 
+static uint64_t get_total_size(ssize_t val)
+{
+#if SSIZE_MAX > UINT64_MAX
+# error "This config is not supported. SSIZE_MAX is very big."
+#endif
+
+       return (val < 0) ? 0 : (uint64_t)val;
+}
+
+static uint32_t get_pack_size(uint64_t total_size)
+{
+       return total_size > SOCKET_SEND_SIZE ? SOCKET_SEND_SIZE : total_size;
+}
+
 void getAddress(const struct sockaddr *sa, char *address)
 {
        char buff[INET6_ADDRSTRLEN];
@@ -241,7 +255,7 @@ HANDLER_WRAPPERS(network_feature, ssize_t, send, int, socket,
 {
        ssize_t (*sendp)(int socket, const void *message, size_t length,
                         int flags);
-       ssize_t sret, result;
+       ssize_t sret;
        BEFORE_ORIGINAL_SOCK(send, LIBC);
 
        char *messagP = (char *)message;
@@ -253,12 +267,9 @@ HANDLER_WRAPPERS(network_feature, ssize_t, send, int, socket,
                                                  length, flags);
 
        sret = sendp(socket, message, length, flags);
-       result = sret;
-       if (result < 0)
-               result = 0;
-       info.msg_total_size = (uint64_t)result;
-       info.msg_pack_size = result > SOCKET_SEND_SIZE ? SOCKET_SEND_SIZE
-                                                      : result;
+
+       info.msg_total_size = get_total_size(sret);
+       info.msg_pack_size = get_pack_size(info.msg_total_size);
        info.msg_buf = messagP;
 
        AFTER_ORIGINAL_LIBC_SOCK_WAIT_FUNC_END('x', sret, OBJ_DUMMY, socket,
@@ -273,7 +284,7 @@ HANDLER_WRAPPERS(network_feature, ssize_t, recv, int, socket, void *, buffer,
                 size_t, length, int, flags)
 {
        ssize_t (*recvp)(int socket, void *buffer, size_t length, int flags);
-       ssize_t sret, result;
+       ssize_t sret;
 
        BEFORE_ORIGINAL_SOCK(recv, LIBC);
 
@@ -286,12 +297,9 @@ HANDLER_WRAPPERS(network_feature, ssize_t, recv, int, socket, void *, buffer,
                                                 length, flags);
 
        sret = recvp(socket, buffer, length, flags);
-       result = sret;
-       if (result < 0)
-               result = 0;
-       info.msg_total_size = (uint64_t)result;
-       info.msg_pack_size = result > SOCKET_SEND_SIZE ? SOCKET_SEND_SIZE
-                                                      : result;
+
+       info.msg_total_size = get_total_size(sret);
+       info.msg_pack_size = get_pack_size(info.msg_total_size);
        info.msg_buf = bufferP;
 
        AFTER_ORIGINAL_LIBC_SOCK_WAIT_FUNC_END('x', sret, OBJ_DUMMY, socket,
@@ -309,7 +317,7 @@ HANDLER_WRAPPERS(network_feature, ssize_t, sendto, int, socket,
        ssize_t (*sendtop)(int socket, const void *message, size_t length,
                           int flags, const struct sockaddr *dest_addr,
                           socklen_t dest_len);
-       ssize_t sret, result;
+       ssize_t sret;
 
        BEFORE_ORIGINAL_SOCK(sendto, LIBC);
 
@@ -325,12 +333,9 @@ HANDLER_WRAPPERS(network_feature, ssize_t, sendto, int, socket,
                                                 dest_len);
 
        sret = sendtop(socket, message, length, flags, dest_addr, dest_len);
-       result = sret;
-       if (result < 0)
-               result = 0;
-       info.msg_total_size = (uint64_t)result;
-       info.msg_pack_size = result > SOCKET_SEND_SIZE ? SOCKET_SEND_SIZE
-                                                      : result;
+
+       info.msg_total_size = get_total_size(sret);
+       info.msg_pack_size = get_pack_size(info.msg_total_size);
        info.msg_buf = bufferP;
 
        AFTER_ORIGINAL_LIBC_SOCK_WAIT_FUNC_END('x', sret, OBJ_DUMMY, socket,
@@ -351,7 +356,7 @@ HANDLER_WRAPPERS(network_feature, ssize_t, recvfrom, int, socket,
        ssize_t (*recvfromp)(int socket, void *buffer, size_t length,
                             int flags, struct sockaddr *address,
                             socklen_t *address_len);
-       ssize_t sret, result;
+       ssize_t sret;
 
        BEFORE_ORIGINAL_SOCK(recvfrom, LIBC);
 
@@ -368,12 +373,8 @@ HANDLER_WRAPPERS(network_feature, ssize_t, recvfrom, int, socket,
        sret = recvfromp(socket, buffer, length, flags, address, address_len);
        info.sock = (struct sockaddr *)address;
 
-       result = sret;
-       if (result < 0)
-               result = 0;
-       info.msg_total_size = (uint64_t)result;
-       info.msg_pack_size = result > SOCKET_SEND_SIZE ? SOCKET_SEND_SIZE
-                                                      : result;
+       info.msg_total_size = get_total_size(sret);
+       info.msg_pack_size = get_pack_size(info.msg_total_size);
        info.msg_buf = bufferP;
 
        AFTER_ORIGINAL_LIBC_SOCK_WAIT_FUNC_END('x', sret, OBJ_DUMMY, socket,