* lib/sgroupio.c: Added splint annotations.
+2009-04-25 Nicolas François <nicolas.francois@centraliens.net>
+
+ * lib/sgroupio.c: Free allocated structures on failure.
+ * lib/sgroupio.c: Added splint annotations.
+
2009-04-25 Nicolas François <nicolas.francois@centraliens.net>
* lib/Makefile.am, lib/get_pid.c, lib/getulong.c: Added get_pid()
2009-04-25 Nicolas François <nicolas.francois@centraliens.net>
* lib/Makefile.am, lib/get_pid.c, lib/getulong.c: Added get_pid()
*sg = *sgent;
sg->sg_name = strdup (sgent->sg_name);
if (NULL == sg->sg_name) {
*sg = *sgent;
sg->sg_name = strdup (sgent->sg_name);
if (NULL == sg->sg_name) {
return NULL;
}
sg->sg_passwd = strdup (sgent->sg_passwd);
if (NULL == sg->sg_passwd) {
return NULL;
}
sg->sg_passwd = strdup (sgent->sg_passwd);
if (NULL == sg->sg_passwd) {
+ free (sg->sg_name);
+ free (sg);
return NULL;
}
for (i = 0; NULL != sgent->sg_adm[i]; i++);
sg->sg_adm = (char **) malloc ((i + 1) * sizeof (char *));
if (NULL == sg->sg_adm) {
return NULL;
}
for (i = 0; NULL != sgent->sg_adm[i]; i++);
sg->sg_adm = (char **) malloc ((i + 1) * sizeof (char *));
if (NULL == sg->sg_adm) {
+ free (sg->sg_passwd);
+ free (sg->sg_name);
+ free (sg);
return NULL;
}
for (i = 0; NULL != sgent->sg_adm[i]; i++) {
sg->sg_adm[i] = strdup (sgent->sg_adm[i]);
if (NULL == sg->sg_adm[i]) {
return NULL;
}
for (i = 0; NULL != sgent->sg_adm[i]; i++) {
sg->sg_adm[i] = strdup (sgent->sg_adm[i]);
if (NULL == sg->sg_adm[i]) {
+ for (i = 0; NULL != sg->sg_adm[i]; i++) {
+ free (sg->sg_adm[i]);
+ }
+ free (sg->sg_adm);
+ free (sg->sg_passwd);
+ free (sg->sg_name);
+ free (sg);
for (i = 0; NULL != sgent->sg_mem[i]; i++);
sg->sg_mem = (char **) malloc ((i + 1) * sizeof (char *));
if (NULL == sg->sg_mem) {
for (i = 0; NULL != sgent->sg_mem[i]; i++);
sg->sg_mem = (char **) malloc ((i + 1) * sizeof (char *));
if (NULL == sg->sg_mem) {
+ for (i = 0; NULL != sg->sg_adm[i]; i++) {
+ free (sg->sg_adm[i]);
+ }
+ free (sg->sg_adm);
+ free (sg->sg_passwd);
+ free (sg->sg_name);
+ free (sg);
return NULL;
}
for (i = 0; NULL != sgent->sg_mem[i]; i++) {
sg->sg_mem[i] = strdup (sgent->sg_mem[i]);
if (NULL == sg->sg_mem[i]) {
return NULL;
}
for (i = 0; NULL != sgent->sg_mem[i]; i++) {
sg->sg_mem[i] = strdup (sgent->sg_mem[i]);
if (NULL == sg->sg_mem[i]) {
+ for (i = 0; NULL != sg->sg_mem[i]; i++) {
+ free (sg->sg_mem[i]);
+ }
+ free (sg->sg_mem);
+ for (i = 0; NULL != sg->sg_adm[i]; i++) {
+ free (sg->sg_adm[i]);
+ }
+ free (sg->sg_adm);
+ free (sg->sg_passwd);
+ free (sg->sg_name);
+ free (sg);
return commonio_open (&gshadow_db, mode);
}
return commonio_open (&gshadow_db, mode);
}
-const struct sgrp *sgr_locate (const char *name)
+/*@observer@*/ /*@null@*/const struct sgrp *sgr_locate (const char *name)
{
return commonio_locate (&gshadow_db, name);
}
{
return commonio_locate (&gshadow_db, name);
}
gshadow_db.changed = true;
}
gshadow_db.changed = true;
}
-/*@null@*/struct commonio_entry *__sgr_get_head (void)
+/*@dependent@*/ /*@null@*/struct commonio_entry *__sgr_get_head (void)
{
return gshadow_db.head;
}
{
return gshadow_db.head;
}