this patch avoids a possible undefined behviour at the loop when it tries to 
access the password field after the 6th position (password is a fixed size 
string of 6 chars)
/home/netto/Desktop/osv/osv-tomcat9/tests/tst-crypt.c:44:29: warning: iteration 
6 invokes undefined behavior [-Waggressive-loop-optimizations]
    buf[i * 8 + j] = password[i] >> j & 1;
                     ~~~~~~~~^~~
/home/netto/Desktop/osv/osv-tomcat9/tests/tst-crypt.c:42:2: note: within this 
loop
  for (i = 0; i < 8; i++) {
  ^~~

Signed-off-by: geraldo netto <[email protected]>
---
 tests/tst-crypt.c | 18 +++++++-----------
 1 file changed, 7 insertions(+), 11 deletions(-)

diff --git a/tests/tst-crypt.c b/tests/tst-crypt.c
index abcec95f..9aec1692 100644
--- a/tests/tst-crypt.c
+++ b/tests/tst-crypt.c
@@ -32,41 +32,37 @@ int main(void) {
        if (strcmp(result3, crypt(password, concat_str((char*) "$5$", 
password))) != 0) return -3;
 
        // 
$6$Ab(d3$TB6UIPV7sprvpcQh2esPr2/ye4FTp9lLft8yAj.2x/HcTXPwzGDxdK/tIF10DdVdV9Z2hhc3MaosUBS3fdueZ1
-       if (strcmp(result4, crypt(password, concat_str((char*) "$6$", 
password))) !=0) return -4;
+       if (strcmp(result4, crypt(password, concat_str((char*) "$6$", 
password))) != 0) return -4;
 
        // encrypt
        // http://man7.org/linux/man-pages/man3/encrypt.3.html
        char key[64];
        char buf[64];
-       char txt[9];
+       char txt[6];
        int i, j;
 
-       for (i = 0; i < 8; i++) {
+       for (i = 0; i < 6; i++) {
                for (j = 0; j < 8; j++) {
                        buf[i * 8 + j] = password[i] >> j & 1;
                }
-
-               setkey(key);
        }
+       setkey(key);
+
 
        encrypt(buf, 0);
-       for (i = 0; i < 8; i++) {
+       for (i = 0; i < 6; i++) {
                for (j = 0, txt[i] = '\0'; j < 8; j++) {
                        txt[i] |= buf[i * 8 + j] << j;
                }
-
-               txt[8] = '\0';
        }
 
        if (strcmp(password, txt) == 0) return -5;
 
        encrypt(buf, 1);
-       for (i = 0; i < 8; i++) {
+       for (i = 0; i < 6; i++) {
                for (j = 0, txt[i] = '\0'; j < 8; j++) {
                        txt[i] |= buf[i * 8 + j] << j;
                }
-
-               txt[8] = '\0';
        }
 
        return (strcmp(password, txt) == 0) ? 0 : -6;
-- 
2.17.1

-- 
You received this message because you are subscribed to the Google Groups "OSv 
Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to