]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/config.c
Fixed slapd extended match memory leak (ITS#3146)
[openldap] / servers / slapd / config.c
index ae65665ce267bb96b11a14b3b26179856dcf5f86..df929414f4b125c73aefbc262c212c58ec75c54c 100644 (file)
@@ -3173,51 +3173,48 @@ parse_syncrepl_line(
                } else if ( !strncasecmp( cargv[ i ],
                        INTERVALSTR, sizeof( INTERVALSTR ) - 1 ) )
                {
+                       char *hstr;
+                       char *mstr;
+                       char *dstr;
+                       char *sstr;
+                       int dd, hh, mm, ss;
                        val = cargv[ i ] + sizeof( INTERVALSTR );
-                       if ( si->si_type == LDAP_SYNC_REFRESH_AND_PERSIST ) {
-                               si->si_interval = 0;
-                       } else {
-                               char *hstr;
-                               char *mstr;
-                               char *dstr;
-                               char *sstr;
-                               int dd, hh, mm, ss;
-                               dstr = val;
-                               hstr = strchr( dstr, ':' );
-                               if ( hstr == NULL ) {
-                                       fprintf( stderr, "Error: parse_syncrepl_line: "
-                                               "invalid interval \"%s\"\n", val );
-                                       return 1;
-                               }
-                               *hstr++ = '\0';
-                               mstr = strchr( hstr, ':' );
-                               if ( mstr == NULL ) {
-                                       fprintf( stderr, "Error: parse_syncrepl_line: "
-                                               "invalid interval \"%s\"\n", val );
-                                       return 1;
-                               }
-                               *mstr++ = '\0';
-                               sstr = strchr( mstr, ':' );
-                               if ( sstr == NULL ) {
-                                       fprintf( stderr, "Error: parse_syncrepl_line: "
-                                               "invalid interval \"%s\"\n", val );
-                                       return 1;
-                               }
-                               *sstr++ = '\0';
-
-                               dd = atoi( dstr );
-                               hh = atoi( hstr );
-                               mm = atoi( mstr );
-                               ss = atoi( sstr );
-                               if (( hh > 24 ) || ( hh < 0 ) ||
-                                       ( mm > 60 ) || ( mm < 0 ) ||
-                                       ( ss > 60 ) || ( ss < 0 ) || ( dd < 0 )) {
-                                       fprintf( stderr, "Error: parse_syncrepl_line: "
-                                               "invalid interval \"%s\"\n", val );
-                                       return 1;
-                               }
-                               si->si_interval = (( dd * 24 + hh ) * 60 + mm ) * 60 + ss;
+                       dstr = val;
+                       hstr = strchr( dstr, ':' );
+                       if ( hstr == NULL ) {
+                               fprintf( stderr, "Error: parse_syncrepl_line: "
+                                       "invalid interval \"%s\"\n", val );
+                               return 1;
                        }
+                       *hstr++ = '\0';
+                       mstr = strchr( hstr, ':' );
+                       if ( mstr == NULL ) {
+                               fprintf( stderr, "Error: parse_syncrepl_line: "
+                                       "invalid interval \"%s\"\n", val );
+                               return 1;
+                       }
+                       *mstr++ = '\0';
+                       sstr = strchr( mstr, ':' );
+                       if ( sstr == NULL ) {
+                               fprintf( stderr, "Error: parse_syncrepl_line: "
+                                       "invalid interval \"%s\"\n", val );
+                               return 1;
+                       }
+                       *sstr++ = '\0';
+
+                       dd = atoi( dstr );
+                       hh = atoi( hstr );
+                       mm = atoi( mstr );
+                       ss = atoi( sstr );
+                       if (( hh > 24 ) || ( hh < 0 ) ||
+                               ( mm > 60 ) || ( mm < 0 ) ||
+                               ( ss > 60 ) || ( ss < 0 ) || ( dd < 0 )) {
+                               fprintf( stderr, "Error: parse_syncrepl_line: "
+                                       "invalid interval \"%s\"\n", val );
+                               return 1;
+                       }
+                       si->si_interval = (( dd * 24 + hh ) * 60 + mm ) * 60 + ss;
+
                        if ( si->si_interval < 0 ) {
                                fprintf( stderr, "Error: parse_syncrepl_line: "
                                        "invalid interval \"%ld\"\n",