X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=skein_cli.c;h=0ab840835690951179942431663d506041ab4fba;hb=ff93bbdae2026ff865e07c05450560d0594d935a;hp=23f3e1d0747f655d3f0d2b88025a5dee8b5d13ce;hpb=5a4842dfbd9440b46ceaf9a3266810c458cece0f;p=skeinsum.git diff --git a/skein_cli.c b/skein_cli.c index 23f3e1d..0ab8408 100644 --- a/skein_cli.c +++ b/skein_cli.c @@ -210,6 +210,7 @@ void HashStdin(int tag) } } +/* Return: -1 = Error, 0 = Mismatch, 1 = Match */ int HashMatch(const char StoredDigest[], const char *filename, int quiet) { char mode = 't'; @@ -220,20 +221,23 @@ int HashMatch(const char StoredDigest[], const char *filename, int quiet) char MsgDigest[hashbitlen/2]; if (HashWithMode(filename, MsgDigest, mode) < 0) - return 0; + return -1; if (strcmp(MsgDigest, StoredDigest)) { printf("%s: FAILED\n", filename); return 0; } + if (quiet > 0) printf("%s: OK\n", filename); return 1; } +/* Return: -1 = some errors/mismatches, 1 = all ok */ int VerifyHashesFromFile(FILE *fp, int status, int warn, int quiet) { - char hash[500], MsgDigest_tmp[hashbitlen/2]; + char hash[PATH_MAX + hashbitlen/4 + 4]; + char MsgDigest_tmp[hashbitlen/2]; int NoMatch = 0, NotProper = 0, Computed = 0; int line = 0; @@ -242,7 +246,7 @@ int VerifyHashesFromFile(FILE *fp, int status, int warn, int quiet) char file_tmp[PATH_MAX]; line ++; Computed++; - unsigned int hashVersion = decomposeHashLine(hash,MsgDigest_tmp,file_tmp); + int hashVersion = decomposeHashLine(hash,MsgDigest_tmp,file_tmp); if (hashVersion == -1) { fprintf(stderr, "skein%d: %s is using newer version of skein%d algorithm\n",hashbitlen,file_tmp,hashbitlen); @@ -262,7 +266,7 @@ int VerifyHashesFromFile(FILE *fp, int status, int warn, int quiet) NotProper ++; NoMatch ++; } - else if (!HashMatch(MsgDigest_tmp, file_tmp, quiet)) + else if (HashMatch(MsgDigest_tmp, file_tmp, quiet) <= 0) { NoMatch++; }