=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/ssh/Attic/key.c,v retrieving revision 1.70 retrieving revision 1.71 diff -u -r1.70 -r1.71 --- src/usr.bin/ssh/Attic/key.c 2008/06/11 21:01:35 1.70 +++ src/usr.bin/ssh/Attic/key.c 2008/06/11 23:02:22 1.71 @@ -1,4 +1,4 @@ -/* $OpenBSD: key.c,v 1.70 2008/06/11 21:01:35 grunk Exp $ */ +/* $OpenBSD: key.c,v 1.71 2008/06/11 23:02:22 otto Exp $ */ /* * read_bignum(): * Copyright (c) 1995 Tatu Ylonen , Espoo, Finland @@ -326,17 +326,18 @@ */ char *augmentation_string = " .o+=*BOX@%&#/^"; char *retval, *p; - char field[FLDSIZE_X][FLDSIZE_Y]; + u_char field[FLDSIZE_X][FLDSIZE_Y]; u_int i, b; int x, y; + size_t len = strlen(augmentation_string); retval = xcalloc(1, (FLDSIZE_X + 3) * (FLDSIZE_Y + 2)); /* initialize field */ - memset(field, ' ', FLDSIZE_X * FLDSIZE_Y * sizeof(char)); + memset(field, 0, FLDSIZE_X * FLDSIZE_Y * sizeof(char)); x = FLDSIZE_X / 2; y = FLDSIZE_Y / 2; - field[x][y] = '.'; + field[x][y] = 1; /* process raw key */ for (i = 0; i < dgst_raw_len; i++) { @@ -355,10 +356,7 @@ y = MIN(y, FLDSIZE_Y - 1); /* augment the field */ - p = strchr(augmentation_string, field[x][y]); - if (*++p != '\0') - field[x][y] = *p; - + field[x][y]++; input = input >> 2; } } @@ -377,7 +375,7 @@ for (y = 0; y < FLDSIZE_Y; y++) { *p++ = '|'; for (x = 0; x < FLDSIZE_X; x++) - *p++ = field[x][y]; + *p++ = augmentation_string[MIN(field[x][y], len - 1)]; *p++ = '|'; *p++ = '\n'; }