From 3077cc6bac0e6b726a2e3570960b05df5176f96f Mon Sep 17 00:00:00 2001 From: Tom Yu Date: Mon, 28 Sep 2009 20:34:52 +0000 Subject: [PATCH] pull up r22403 from trunk ------------------------------------------------------------------------ r22403 | epeisach | 2009-06-06 09:46:06 -0400 (Sat, 06 Jun 2009) | 9 lines ticket: 6509 subject: kadmind is parsing acls good deref NULL pointer on error 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 version_fixed: 1.7.1 status: resolved git-svn-id: svn://anonsvn.mit.edu/krb5/branches/krb5-1-7@22797 dc483132-0cff-0310-8789-dd5450dbe970 --- src/lib/kadm5/srv/server_acl.c | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/src/lib/kadm5/srv/server_acl.c b/src/lib/kadm5/srv/server_acl.c index ec6fd9dd3..af42fba89 100644 --- a/src/lib/kadm5/srv/server_acl.c +++ b/src/lib/kadm5/srv/server_acl.c @@ -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, -- 2.26.2