]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Check return of ber_scanf() CID #1512416
authorNick Porter <nick@portercomputing.co.uk>
Mon, 29 Aug 2022 07:16:05 +0000 (08:16 +0100)
committerNick Porter <nick@portercomputing.co.uk>
Mon, 29 Aug 2022 07:16:05 +0000 (08:16 +0100)
src/listen/ldap_sync/persistent_search.c

index dea77d048e17b322247fd1cdefe320562068a2f4..f18ece800502cb39795d3df561e66ae07d1e3464 100644 (file)
@@ -246,7 +246,10 @@ int persistent_sync_search_entry(sync_state_t *sync, LDAPMessage *msg, LDAPContr
        }
 
        if (ber_peek_tag(ber, &len) == 0x02) {
-               ber_scanf(ber, "i", &change_no);
+               if (ber_scanf(ber, "i", &change_no) == LBER_ERROR) {
+                       ERROR("Malformed changeNumber control");
+                       goto free_ber;
+               }
                /*
                 *      The server has returned a changeNumber, treat it as a new cookie
                 */
@@ -255,7 +258,7 @@ int persistent_sync_search_entry(sync_state_t *sync, LDAPMessage *msg, LDAPContr
                if (ldap_sync_cookie_store(sync, sync->cookie, false) < 0) goto error;
        }
 
-       if (ber_scanf(ber, "}") == LBER_ERROR ) {
+       if (ber_scanf(ber, "}") == LBER_ERROR) {
                ERROR("Malformed syncStatevalue sequence");
                goto free_ber;
        }