fixing small coverity issues: 751966 Argument cannot be negative,
authorMuhammad Usama <m.usama@gmail.com>
Wed, 3 Sep 2014 13:54:23 +0000 (18:54 +0500)
committerMuhammad Usama <m.usama@gmail.com>
Wed, 3 Sep 2014 13:54:23 +0000 (18:54 +0500)
1111399 Explicit null dereferenced and 1111488 Uninitialized scalar variable

main.c
pool_process_query.c
pool_proto_modules.c

diff --git a/main.c b/main.c
index 02948506df1d8968017f903bb7d847d6b5389c2c..2515c6aff90c68f3aa7d6effda321b9239dedbab 100644 (file)
--- a/main.c
+++ b/main.c
@@ -799,11 +799,17 @@ static void daemonize(void)
        rc_chdir = chdir("/");
 
        i = open("/dev/null", O_RDWR);
-       dup2(i, 0);
-       dup2(i, 1);
-       dup2(i, 2);
-       close(i);
-
+       if(i < 0)
+       {
+               pool_error("Failed to open \"/dev/null\" reason:%s", strerror(errno));
+       }
+       else
+       {
+               dup2(i, 0);
+               dup2(i, 1);
+               dup2(i, 2);
+               close(i);
+       }
        /* close syslog connection for daemonizing */
        if (pool_config->logsyslog) {
                closelog();
index b381bdba5e0db73e1e1929481f7f723d40922e34..09d0c5290704f796dfd0f0da3f1f036a98991360 100644 (file)
@@ -2744,9 +2744,17 @@ POOL_STATUS do_query(POOL_CONNECTION *backend, char *query, POOL_SELECT_RESULT *
 
                                if (major == PROTO_MAJOR_V3)
                                {
-                                       p = packet;
-                    memcpy(&shortval, p, sizeof(short));
-                    p += sizeof(num_fields);
+                                       if(packet)
+                                       {
+                                               p = packet;
+                                               memcpy(&shortval, p, sizeof(short));
+                                               p += sizeof(num_fields);
+                                       }
+                                       else
+                                       {
+                                               pool_error("do_query: no data received for row description");
+                                               return POOL_END;
+                                       }
                                }
                                else
                                {
index 69aca1cb960bdfe407f3afe246e9cd2d0aceb153..bcb5041dfb8342f97debe6f58b483cfddbd5abb4 100644 (file)
@@ -1244,7 +1244,7 @@ POOL_STATUS ReadyForQuery(POOL_CONNECTION *frontend,
        int i;
        int len;
        signed char kind;
-       signed char state;
+       signed char state = 0;
        POOL_SESSION_CONTEXT *session_context;
        Node *node = NULL;
        char *query = NULL;