kadmind is parsing acls good deref NULL pointer on error
authorEzra Peisach <epeisach@mit.edu>
Sat, 6 Jun 2009 13:46:06 +0000 (13:46 +0000)
committerEzra Peisach <epeisach@mit.edu>
Sat, 6 Jun 2009 13:46:06 +0000 (13:46 +0000)
In kadm5int_acl_parse_line, if you setup an acl w/ restrictions
(i.e. the four argument acl format) - but have an error parsing the
first few fields, acle is NULLed out, and is then derefed.

This adds a conditional and indents according to the krb5 c-style...

ticket: 6509

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@22403 dc483132-0cff-0310-8789-dd5450dbe970

src/lib/kadm5/srv/server_acl.c

index 76220446d3cb0911b4838e4c1e2ac4140162eb2a..fd245babe7dd8c7c6d8fdd0c252b5047f52f26c7 100644 (file)
@@ -238,20 +238,24 @@ kadm5int_acl_parse_line(lp)
                free(acle);
                acle = (aent_t *) NULL;
            }
-           if ( nmatch >= 4 ) {
-               char    *trailing;
-
-               trailing = &acle_restrictions[strlen(acle_restrictions)-1];
-               while ( isspace((int) *trailing) )
-                   trailing--;
-               trailing[1] = '\0';
-               acle->ae_restriction_string = strdup(acle_restrictions);
-           }
-           else {
-               acle->ae_restriction_string = (char *) NULL;
+
+           if (acle) {
+                   if ( nmatch >= 4 ) {
+                           char        *trailing;
+                           
+                           trailing = &acle_restrictions[strlen(acle_restrictions)-1];
+                           while ( isspace((int) *trailing) )
+                                   trailing--;
+                           trailing[1] = '\0';
+                           acle->ae_restriction_string = 
+                                   strdup(acle_restrictions);
+                   }
+                   else {
+                           acle->ae_restriction_string = (char *) NULL;
+                   }
+                   acle->ae_restriction_bad = 0;
+                   acle->ae_restrictions = (restriction_t *) NULL;
            }
-           acle->ae_restriction_bad = 0;
-           acle->ae_restrictions = (restriction_t *) NULL;
        }
     }
     DPRINT(DEBUG_CALLS, acl_debug_level,