]> git.ipfire.org Git - thirdparty/shadow.git/commitdiff
libmisc/salt.c: Add comments how the minmum buffer length is computed.
authorBjörn Esser <besser82@fedoraproject.org>
Mon, 14 Jun 2021 21:28:28 +0000 (23:28 +0200)
committerBjörn Esser <besser82@fedoraproject.org>
Wed, 23 Jun 2021 14:29:24 +0000 (16:29 +0200)
In the previous commit we refactored the functions converting the
rounds number into a string for use with the crypt() function, to
not require any static buffer anymore.

Add some clarifying comments about how the minimum required buffer
length is computed inside of these functions.

Signed-off-by: Björn Esser <besser82@fedoraproject.org>
libmisc/salt.c

index 98982ed10b545ce6c8f6ea06b8bffe4000e46ba3..e17093fc1362172abc45a0e3a659c5a500fa906c 100644 (file)
@@ -216,7 +216,14 @@ static /*@observer@*/void SHA_salt_rounds_to_buf (char *buf, /*@null@*/int *pref
                return;
        }
 
-       /* Check if the result buffer is long enough. */
+       /*
+        * Check if the result buffer is long enough.
+        * We are going to write a maximum of 17 bytes,
+        * plus one byte for the terminator.
+        *    rounds=XXXXXXXXX$
+        *    00000000011111111
+        *    12345678901234567
+        */
        assert (GENSALT_SETTING_SIZE > buf_begin + 17);
 
        (void) snprintf (buf + buf_begin, 18, "rounds=%lu$", rounds);
@@ -274,7 +281,14 @@ static /*@observer@*/void BCRYPT_salt_rounds_to_buf (char *buf, /*@null@*/int *p
                rounds = 19;
        }
 
-       /* Check if the result buffer is long enough. */
+       /*
+        * Check if the result buffer is long enough.
+        * We are going to write three bytes,
+        * plus one byte for the terminator.
+        *    XX$
+        *    000
+        *    123
+        */
        assert (GENSALT_SETTING_SIZE > buf_begin + 3);
 
        (void) snprintf (buf + buf_begin, 4, "%2.2lu$", rounds);
@@ -308,8 +322,15 @@ static /*@observer@*/void YESCRYPT_salt_cost_to_buf (char *buf, /*@null@*/int *p
                cost = Y_COST_MAX;
        }
 
-       /* Check if the result buffer is long enough. */
-       assert (GENSALT_SETTING_SIZE > buf_begin + 3);
+       /*
+        * Check if the result buffer is long enough.
+        * We are going to write four bytes,
+        * plus one byte for the terminator.
+        *    jXX$
+        *    0000
+        *    1234
+        */
+       assert (GENSALT_SETTING_SIZE > buf_begin + 4);
 
        buf[buf_begin + 0] = 'j';
        if (cost < 3) {