Blame chntpw-140201-fix-bogus-errno-use.patch
|
|
7fea2df |
diff -u chntpw-140201.orig/ntreg.c chntpw-140201/ntreg.c
|
|
|
7fea2df |
--- chntpw-140201.orig/ntreg.c 2019-06-22 13:09:59.583717369 -0700
|
|
|
7fea2df |
+++ chntpw-140201/ntreg.c 2019-06-22 13:16:26.714726148 -0700
|
|
|
7fea2df |
@@ -4241,10 +4241,13 @@
|
|
|
7fea2df |
do { /* On some platforms read may not block, and read in chunks. handle that */
|
|
|
7fea2df |
r = read(hdesc->filedesc, hdesc->buffer + rt, hdesc->size - rt);
|
|
|
7fea2df |
rt += r;
|
|
|
7fea2df |
- } while ( !errno && (rt < hdesc->size) );
|
|
|
7fea2df |
+ } while ( r > 0 && (rt < hdesc->size) );
|
|
|
7fea2df |
|
|
|
7fea2df |
- if (errno) {
|
|
|
7fea2df |
- perror("openHive(): read error: ");
|
|
|
7fea2df |
+ if (r <= 0) {
|
|
|
7fea2df |
+ if (r < 0)
|
|
|
7fea2df |
+ perror("openHive(): read error");
|
|
|
7fea2df |
+ else
|
|
|
7fea2df |
+ fprintf(stderr, "openHive(): read error: unexpected EOF\n");
|
|
|
7fea2df |
closeHive(hdesc);
|
|
|
7fea2df |
return(NULL);
|
|
|
7fea2df |
}
|
|
|
7fea2df |
@@ -4255,10 +4258,10 @@
|
|
|
7fea2df |
return(NULL);
|
|
|
7fea2df |
}
|
|
|
7fea2df |
|
|
|
7fea2df |
- if (r < sizeof (*hdesc)) {
|
|
|
7fea2df |
+ if (rt < sizeof (*hdesc)) {
|
|
|
7fea2df |
fprintf(stderr,
|
|
|
7fea2df |
- "file is too small; got %d bytes while expecting %d or more\n",
|
|
|
7fea2df |
- r, sizeof (*hdesc));
|
|
|
7fea2df |
+ "file is too small; got %d bytes while expecting %zu or more\n",
|
|
|
7fea2df |
+ rt, sizeof (*hdesc));
|
|
|
7fea2df |
closeHive(hdesc);
|
|
|
7fea2df |
return(NULL);
|
|
|
7fea2df |
}
|