]> granicus.if.org Git - shadow/commitdiff
Add splint annotations.
authorNicolas François <nicolas.francois@centraliens.net>
Tue, 13 Aug 2013 17:13:45 +0000 (19:13 +0200)
committerNicolas François <nicolas.francois@centraliens.net>
Tue, 13 Aug 2013 17:13:45 +0000 (19:13 +0200)
* lib/groupmem.c: Add splint annotations. The added memset makes
splint think data was allocated.
* lib/pwmem.c: Likewise.
* lib/sgroupio.c: Likewise.
* lib/shadowmem.c: Likewise.

ChangeLog
lib/groupmem.c
lib/pwmem.c
lib/sgroupio.c
lib/shadowmem.c

index c670c50e56d216647e4b88005dfc51b82479836c..e6531c51fbb58dc8c323c305e3821c67d12592a7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2013-08-13  Nicolas François  <nicolas.francois@centraliens.net>
+
+       * lib/groupmem.c: Add splint annotations. The added memset makes
+       splint think data was allocated.
+       * lib/pwmem.c: Likewise.
+       * lib/sgroupio.c: Likewise.
+       * lib/shadowmem.c: Likewise.
+
 2013-08-13  Nicolas François  <nicolas.francois@centraliens.net>
 
        * man/login.defs.d/SUB_GID_COUNT.xml: Document that the behavior
index f06ed3b2a7e7e79b71523e8d6e2531e75f38d3f8..e69c31073f41a179e30445469d27f73aeda45f0c 100644 (file)
@@ -3,7 +3,7 @@
  * Copyright (c) 1996 - 2000, Marek Michałkiewicz
  * Copyright (c) 2001       , Michał Moskal
  * Copyright (c) 2005       , Tomasz Kłoczko
- * Copyright (c) 2007 - 2010, Nicolas François
+ * Copyright (c) 2007 - 2013, Nicolas François
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
        /* The libc might define other fields. They won't be copied. */
        memset (gr, 0, sizeof *gr);
        gr->gr_gid = grent->gr_gid;
+       /*@-mustfreeonly@*/
        gr->gr_name = strdup (grent->gr_name);
+       /*@=mustfreeonly@*/
        if (NULL == gr->gr_name) {
                free(gr);
                return NULL;
        }
+       /*@-mustfreeonly@*/
        gr->gr_passwd = strdup (grent->gr_passwd);
+       /*@=mustfreeonly@*/
        if (NULL == gr->gr_passwd) {
                free(gr->gr_name);
                free(gr);
@@ -65,7 +69,9 @@
 
        for (i = 0; grent->gr_mem[i]; i++);
 
+       /*@-mustfreeonly@*/
        gr->gr_mem = (char **) malloc ((i + 1) * sizeof (char *));
+       /*@=mustfreeonly@*/
        if (NULL == gr->gr_mem) {
                free(gr->gr_passwd);
                free(gr->gr_name);
index 9786d5b687d3d369a47d07833a81bcc2ae176a34..7013e8a38943c7ebdaa6efb4d51d7fac5b9e3266 100644 (file)
@@ -3,7 +3,7 @@
  * Copyright (c) 1996 - 2000, Marek Michałkiewicz
  * Copyright (c) 2001       , Michał Moskal
  * Copyright (c) 2003 - 2005, Tomasz Kłoczko
- * Copyright (c) 2007 - 2009, Nicolas François
+ * Copyright (c) 2007 - 2013, Nicolas François
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
        memset (pw, 0, sizeof *pw);
        pw->pw_uid = pwent->pw_uid;
        pw->pw_gid = pwent->pw_gid;
+       /*@-mustfreeonly@*/
        pw->pw_name = strdup (pwent->pw_name);
+       /*@=mustfreeonly@*/
        if (NULL == pw->pw_name) {
                free(pw);
                return NULL;
        }
+       /*@-mustfreeonly@*/
        pw->pw_passwd = strdup (pwent->pw_passwd);
+       /*@=mustfreeonly@*/
        if (NULL == pw->pw_passwd) {
                free(pw->pw_name);
                free(pw);
                return NULL;
        }
+       /*@-mustfreeonly@*/
        pw->pw_gecos = strdup (pwent->pw_gecos);
+       /*@=mustfreeonly@*/
        if (NULL == pw->pw_gecos) {
                free(pw->pw_passwd);
                free(pw->pw_name);
                free(pw);
                return NULL;
        }
+       /*@-mustfreeonly@*/
        pw->pw_dir = strdup (pwent->pw_dir);
+       /*@=mustfreeonly@*/
        if (NULL == pw->pw_dir) {
                free(pw->pw_gecos);
                free(pw->pw_passwd);
@@ -78,7 +86,9 @@
                free(pw);
                return NULL;
        }
+       /*@-mustfreeonly@*/
        pw->pw_shell = strdup (pwent->pw_shell);
+       /*@=mustfreeonly@*/
        if (NULL == pw->pw_shell) {
                free(pw->pw_dir);
                free(pw->pw_gecos);
index 7b51f015be6c45a118e4a86a3a1db39b3933448a..faed0adf067e8b3f4527d435636a84bc90da0127 100644 (file)
@@ -3,7 +3,7 @@
  * Copyright (c) 1996 - 2000, Marek Michałkiewicz
  * Copyright (c) 2001       , Michał Moskal
  * Copyright (c) 2005       , Tomasz Kłoczko
- * Copyright (c) 2007 - 2008, Nicolas François
+ * Copyright (c) 2007 - 2013, Nicolas François
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
        /* Do the same as the other _dup function, even if we know the
         * structure. */
        memset (sg, 0, sizeof *sg);
+       /*@-mustfreeonly@*/
        sg->sg_name = strdup (sgent->sg_name);
+       /*@=mustfreeonly@*/
        if (NULL == sg->sg_name) {
                free (sg);
                return NULL;
        }
+       /*@-mustfreeonly@*/
        sg->sg_passwd = strdup (sgent->sg_passwd);
+       /*@=mustfreeonly@*/
        if (NULL == sg->sg_passwd) {
                free (sg->sg_name);
                free (sg);
@@ -67,7 +71,9 @@
        }
 
        for (i = 0; NULL != sgent->sg_adm[i]; i++);
+       /*@-mustfreeonly@*/
        sg->sg_adm = (char **) malloc ((i + 1) * sizeof (char *));
+       /*@=mustfreeonly@*/
        if (NULL == sg->sg_adm) {
                free (sg->sg_passwd);
                free (sg->sg_name);
@@ -90,7 +96,9 @@
        sg->sg_adm[i] = NULL;
 
        for (i = 0; NULL != sgent->sg_mem[i]; i++);
+       /*@-mustfreeonly@*/
        sg->sg_mem = (char **) malloc ((i + 1) * sizeof (char *));
+       /*@=mustfreeonly@*/
        if (NULL == sg->sg_mem) {
                for (i = 0; NULL != sg->sg_adm[i]; i++) {
                        free (sg->sg_adm[i]);
index 41dbc40ef1adb659ffc60056a4b731681e349404..8989598f8bbd85e96533f2eea75fc0a90034d616 100644 (file)
@@ -3,7 +3,7 @@
  * Copyright (c) 1996 - 2000, Marek Michałkiewicz
  * Copyright (c) 2001       , Michał Moskal
  * Copyright (c) 2005       , Tomasz Kłoczko
- * Copyright (c) 2007 - 2009, Nicolas François
+ * Copyright (c) 2007 - 2013, Nicolas François
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
        sp->sp_inact  = spent->sp_inact;
        sp->sp_expire = spent->sp_expire;
        sp->sp_flag   = spent->sp_flag;
+       /*@-mustfreeonly@*/
        sp->sp_namp   = strdup (spent->sp_namp);
+       /*@=mustfreeonly@*/
        if (NULL == sp->sp_namp) {
                free(sp);
                return NULL;
        }
+       /*@-mustfreeonly@*/
        sp->sp_pwdp = strdup (spent->sp_pwdp);
+       /*@=mustfreeonly@*/
        if (NULL == sp->sp_pwdp) {
                free(sp->sp_namp);
                free(sp);