cvs-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Cvs-cvs] ccvs/src ChangeLog add.c edit.c lock.c rcs.c se... [cvs1-11-x-


From: Mark D. Baushke
Subject: [Cvs-cvs] ccvs/src ChangeLog add.c edit.c lock.c rcs.c se... [cvs1-11-x-branch]
Date: Fri, 26 May 2006 16:25:26 +0000

CVSROOT:        /cvsroot/cvs
Module name:    ccvs
Branch:         cvs1-11-x-branch
Changes by:     Mark D. Baushke <address@hidden>        06/05/26 16:25:25

Modified files:
        src            : ChangeLog add.c edit.c lock.c rcs.c server.c 
                         tag.c 

Log message:
        * add.c (add): Do not leak memory.
        [Fixes NetBSD coverity cid-2199.]
        
        * edit.c (onoff_fileproc): Do not leak memory.
        [Fixes NetBSD coverity cid-2201.]
        
        * edit.c (onoff_filesdoneproc): Do not leak memory.
        [Fixes NetBSD coverity cid-2202.]
        
        * lock.c (readers_exist): Add assert (lockdir).
        [Fixes NetBSD coverity cid-2411.]
        
        * rcs.c (RCS_findlock_or_tip): Do not leak memory.
        [Fixes NetBSD coverity cid-2198.]
        
        * rcs.c (RCS_getdate): Avoid possible NULL dereference.
        [Fixes NetBSD coverity cid-2412.]
        
        * server.c (serve_sticky): Do not leak file descriptors.
        [Fixes NetBSD coverity cid-2197.]
        
        * server.c (do_cvs_command): Do not leak memory.
        [Fixes NetBSD coverity cid-2204.]
        
        * tag.c (add_to_val_tags): Do not leak memory.
        [Fixes NetBSD coverity cid-2071.]

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/cvs/ccvs/src/ChangeLog.diff?only_with_tag=cvs1-11-x-branch&tr1=1.2336.2.453&tr2=1.2336.2.454&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/cvs/ccvs/src/add.c.diff?only_with_tag=cvs1-11-x-branch&tr1=1.80.2.25&tr2=1.80.2.26&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/cvs/ccvs/src/edit.c.diff?only_with_tag=cvs1-11-x-branch&tr1=1.57.4.7&tr2=1.57.4.8&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/cvs/ccvs/src/lock.c.diff?only_with_tag=cvs1-11-x-branch&tr1=1.59.4.19&tr2=1.59.4.20&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/cvs/ccvs/src/rcs.c.diff?only_with_tag=cvs1-11-x-branch&tr1=1.262.4.53&tr2=1.262.4.54&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/cvs/ccvs/src/server.c.diff?only_with_tag=cvs1-11-x-branch&tr1=1.284.2.49&tr2=1.284.2.50&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/cvs/ccvs/src/tag.c.diff?only_with_tag=cvs1-11-x-branch&tr1=1.100.4.15&tr2=1.100.4.16&r1=text&r2=text

Patches:
Index: ccvs/src/ChangeLog
diff -u ccvs/src/ChangeLog:1.2336.2.453 ccvs/src/ChangeLog:1.2336.2.454
--- ccvs/src/ChangeLog:1.2336.2.453     Fri May 26 04:21:51 2006
+++ ccvs/src/ChangeLog  Fri May 26 16:25:24 2006
@@ -1,3 +1,32 @@
+2006-05-26  Mark D. Baushke  <address@hidden>
+
+       * add.c (add): Do not leak memory.
+       [Fixes NetBSD coverity cid-2199.]
+
+       * edit.c (onoff_fileproc): Do not leak memory.
+       [Fixes NetBSD coverity cid-2201.]
+
+       * edit.c (onoff_filesdoneproc): Do not leak memory.
+       [Fixes NetBSD coverity cid-2202.]
+
+       * lock.c (readers_exist): Add assert (lockdir).
+       [Fixes NetBSD coverity cid-2411.]
+
+       * rcs.c (RCS_findlock_or_tip): Do not leak memory.
+       [Fixes NetBSD coverity cid-2198.]
+
+       * rcs.c (RCS_getdate): Avoid possible NULL dereference.
+       [Fixes NetBSD coverity cid-2412.]
+
+       * server.c (serve_sticky): Do not leak file descriptors.
+       [Fixes NetBSD coverity cid-2197.]
+
+       * server.c (do_cvs_command): Do not leak memory.
+       [Fixes NetBSD coverity cid-2204.]
+
+       * tag.c (add_to_val_tags): Do not leak memory.
+       [Fixes NetBSD coverity cid-2071.]
+
 2006-05-25  Derek Price  <address@hidden>
 
        * client.c (start_rsh_server): Default rsh client to RSH_DFLT.  Remove
Index: ccvs/src/add.c
diff -u ccvs/src/add.c:1.80.2.25 ccvs/src/add.c:1.80.2.26
--- ccvs/src/add.c:1.80.2.25    Fri May 12 15:17:38 2006
+++ ccvs/src/add.c      Fri May 26 16:25:25 2006
@@ -161,11 +161,15 @@
        int j;
 
        if (argc == 0)
+       {
            /* We snipped out all the arguments in the above sanity
               check.  We can just forget the whole thing (and we
               better, because if we fired up the server and passed it
               nothing, it would spit back a usage message).  */
+           if (options)
+               free (options);
            return err;
+       }
 
        start_server ();
        ign_setup ();
Index: ccvs/src/edit.c
diff -u ccvs/src/edit.c:1.57.4.7 ccvs/src/edit.c:1.57.4.8
--- ccvs/src/edit.c:1.57.4.7    Thu Sep 15 01:48:26 2005
+++ ccvs/src/edit.c     Fri May 26 16:25:25 2006
@@ -32,8 +32,10 @@
     void *callerdat;
     struct file_info *finfo;
 {
-    fileattr_get0 (finfo->file, "_watched");
+    char *watched = fileattr_get0 (finfo->file, "_watched");
     fileattr_set (finfo->file, "_watched", turning_on ? "" : NULL);
+    if (watched != NULL)
+       free (watched);
     return 0;
 }
 
@@ -52,8 +54,10 @@
 {
     if (setting_default)
     {
-       fileattr_get0 (NULL, "_watched");
+       char *watched = fileattr_get0 (NULL, "_watched");
        fileattr_set (NULL, "_watched", turning_on ? "" : NULL);
+       if (watched != NULL)
+           free (watched);
     }
     return err;
 }
Index: ccvs/src/lock.c
diff -u ccvs/src/lock.c:1.59.4.19 ccvs/src/lock.c:1.59.4.20
--- ccvs/src/lock.c:1.59.4.19   Mon Feb 27 17:04:57 2006
+++ ccvs/src/lock.c     Fri May 26 16:25:25 2006
@@ -668,6 +668,9 @@
 #endif
 
     lockdir = lock_name (repository, "");
+
+    assert (lockdir != NULL);
+
     lockdir[strlen (lockdir) - 1] = '\0';   /* remove trailing slash */
 
     do {
Index: ccvs/src/rcs.c
diff -u ccvs/src/rcs.c:1.262.4.53 ccvs/src/rcs.c:1.262.4.54
--- ccvs/src/rcs.c:1.262.4.53   Tue May 23 02:02:36 2006
+++ ccvs/src/rcs.c      Fri May 26 16:25:25 2006
@@ -3045,6 +3045,8 @@
        {
            char *date_1_1 = vers->date;
 
+           assert (p->data != NULL);
+
            vers = p->data;
            if (RCS_datecmp (vers->date, date_1_1) != 0)
                return xstrdup ("1.1");
@@ -4750,6 +4752,7 @@
     char *user = getcaller();
     Node *lock, *p;
     List *locklist;
+    char *defaultrev = NULL;
 
     /* Find unique delta locked by caller. This code is very similar
        to the code in RCS_unlock -- perhaps it could be abstracted
@@ -4795,7 +4798,10 @@
        those error checks are to make users lock before a checkin, and we do
        that in other ways if at all anyway (e.g. rcslock.pl).  */
 
-    p = findnode (rcs->versions, RCS_getbranch (rcs, rcs->branch, 0));
+    defaultrev = RCS_getbranch (rcs, rcs->branch, 0);
+    p = findnode (rcs->versions, defaultrev);
+    if (defaultrev != NULL)
+       free (defaultrev);
     if (!p)
     {
        error (0, 0, "RCS file `%s' does not contain its default revision.",
Index: ccvs/src/server.c
diff -u ccvs/src/server.c:1.284.2.49 ccvs/src/server.c:1.284.2.50
--- ccvs/src/server.c:1.284.2.49        Fri May 12 21:39:49 2006
+++ ccvs/src/server.c   Fri May 26 16:25:25 2006
@@ -1236,6 +1236,7 @@
        if (alloc_pending (80 + strlen (CVSADM_TAG)))
            sprintf (pending_error_text, "E cannot write to %s", CVSADM_TAG);
        pending_error = save_errno;
+       (void) fclose (f);
        return;
     }
     if (fclose (f) == EOF)
@@ -2974,9 +2975,10 @@
 
     /* OK, sit around getting all the input from the child.  */
     {
-       struct buffer *stdoutbuf;
-       struct buffer *stderrbuf;
-       struct buffer *protocol_inbuf;
+       struct buffer *stdoutbuf = NULL;
+       struct buffer *stderrbuf = NULL;
+       struct buffer *protocol_inbuf = NULL;
+       int err_exit = 0;
        /* Number of file descriptors to check in select ().  */
        int num_to_check;
        int count_needed = 1;
@@ -3029,7 +3031,8 @@
        {
            buf_output0 (buf_to_net, "E close failed\n");
            print_error (errno);
-           goto error_exit;
+           err_exit = 1;
+           goto child_finish;
        }
        stdout_pipe[1] = -1;
 
@@ -3037,7 +3040,8 @@
        {
            buf_output0 (buf_to_net, "E close failed\n");
            print_error (errno);
-           goto error_exit;
+           err_exit = 1;
+           goto child_finish;
        }
        stderr_pipe[1] = -1;
 
@@ -3045,7 +3049,8 @@
        {
            buf_output0 (buf_to_net, "E close failed\n");
            print_error (errno);
-           goto error_exit;
+           err_exit = 1;
+           goto child_finish;
        }
        protocol_pipe[1] = -1;
 
@@ -3054,7 +3059,8 @@
        {
            buf_output0 (buf_to_net, "E close failed\n");
            print_error (errno);
-           goto error_exit;
+           err_exit = 1;
+           goto child_finish;
        }
        flowcontrol_pipe[0] = -1;
 #endif /* SERVER_FLOWCONTROL */
@@ -3064,7 +3070,8 @@
            buf_output0 (buf_to_net, "E close failed\n");
            print_error (errno);
            dev_null_fd = -1;   /* Do not try to close it again. */
-           goto error_exit;
+           err_exit = 1;
+           goto child_finish;
        }
        dev_null_fd = -1;
 
@@ -3151,7 +3158,8 @@
                {
                    buf_output0 (buf_to_net, "E select failed\n");
                    print_error (errno);
-                   goto error_exit;
+                   err_exit = 1;
+                   goto child_finish;
                }
            } while (numfds < 0);
 
@@ -3184,7 +3192,8 @@
                {
                    buf_output0 (buf_to_net, "E buf_input_data failed\n");
                    print_error (status);
-                   goto error_exit;
+                   err_exit = 1;
+                   goto child_finish;
                }
 
                /*
@@ -3258,7 +3267,8 @@
                {
                    buf_output0 (buf_to_net, "E buf_input_data failed\n");
                    print_error (status);
-                   goto error_exit;
+                   err_exit = 1;
+                   goto child_finish;
                }
 
                /* What should we do with errors?  syslog() them?  */
@@ -3283,7 +3293,8 @@
                {
                    buf_output0 (buf_to_net, "E buf_input_data failed\n");
                    print_error (status);
-                   goto error_exit;
+                   err_exit = 1;
+                   goto child_finish;
                }
 
                /* What should we do with errors?  syslog() them?  */
@@ -3363,21 +3374,33 @@
                command_pid = -1;
        }
 
+      child_finish:
        /*
         * OK, we've waited for the child.  By now all CVS locks are free
         * and it's OK to block on the network.
         */
        set_block (buf_to_net);
        buf_flush (buf_to_net, 1);
-       buf_shutdown (protocol_inbuf);
-       buf_free (protocol_inbuf);
-       protocol_inbuf = NULL;
-       buf_shutdown (stderrbuf);
-       buf_free (stderrbuf);
-       stderrbuf = NULL;
-       buf_shutdown (stdoutbuf);
-       buf_free (stdoutbuf);
-       stdoutbuf = NULL;
+       if (protocol_inbuf)
+       {
+           buf_shutdown (protocol_inbuf);
+           buf_free (protocol_inbuf);
+           protocol_inbuf = NULL;
+       }
+       if (stderrbuf)
+       {
+           buf_shutdown (stderrbuf);
+           buf_free (stderrbuf);
+           stderrbuf = NULL;
+       }
+       if (stdoutbuf)
+       {
+           buf_shutdown (stdoutbuf);
+           buf_free (stdoutbuf);
+           stdoutbuf = NULL;
+       }
+       if (err_exit)
+           goto error_exit;
     }
 
     if (errs)
Index: ccvs/src/tag.c
diff -u ccvs/src/tag.c:1.100.4.15 ccvs/src/tag.c:1.100.4.16
--- ccvs/src/tag.c:1.100.4.15   Tue Mar  7 20:04:39 2006
+++ ccvs/src/tag.c      Fri May 26 16:25:25 2006
@@ -1278,6 +1278,8 @@
     if (is_in_val_tags (&db, name))
     {
        clear_val_tags_lock ();
+       if (db)
+           dbm_close (db);
        return;
     }
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]