Index: usr.bin/bsdiff/bspatch/bspatch.c =================================================================== --- usr.bin/bsdiff/bspatch/bspatch.c +++ usr.bin/bsdiff/bspatch/bspatch.c @@ -181,7 +181,7 @@ */ /* Read header */ - if (fread(header, 1, 32, f) < 32) { + if (fread(header, 1, sizeof(header), f) < sizeof(header)) { if (feof(f)) errx(1, "Corrupt patch"); err(1, "fread(%s)", argv[3]); @@ -195,27 +195,27 @@ bzctrllen = offtin(header + 8); bzdatalen = offtin(header + 16); newsize = offtin(header + 24); - if (bzctrllen < 0 || bzctrllen > OFF_MAX - 32 || - bzdatalen < 0 || bzctrllen + 32 > OFF_MAX - bzdatalen || + if (bzctrllen < 0 || bzctrllen > OFF_MAX - sizeof(header) || + bzdatalen < 0 || bzctrllen + sizeof(header) > OFF_MAX - bzdatalen || newsize < 0 || newsize > SSIZE_MAX) errx(1, "Corrupt patch"); /* Close patch file and re-open it via libbzip2 at the right places */ if (fclose(f)) err(1, "fclose(%s)", argv[3]); - if (fseeko(cpf, 32, SEEK_SET)) + if (fseeko(cpf, sizeof(header), SEEK_SET)) err(1, "fseeko(%s, %lld)", argv[3], - (long long)32); + (long long)sizeof(header)); if ((cpfbz2 = BZ2_bzReadOpen(&cbz2err, cpf, 0, 0, NULL, 0)) == NULL) errx(1, "BZ2_bzReadOpen, bz2err = %d", cbz2err); - if (fseeko(dpf, 32 + bzctrllen, SEEK_SET)) + if (fseeko(dpf, sizeof(header) + bzctrllen, SEEK_SET)) err(1, "fseeko(%s, %lld)", argv[3], - (long long)(32 + bzctrllen)); + (long long)(sizeof(header) + bzctrllen)); if ((dpfbz2 = BZ2_bzReadOpen(&dbz2err, dpf, 0, 0, NULL, 0)) == NULL) errx(1, "BZ2_bzReadOpen, bz2err = %d", dbz2err); - if (fseeko(epf, 32 + bzctrllen + bzdatalen, SEEK_SET)) + if (fseeko(epf, sizeof(header) + bzctrllen + bzdatalen, SEEK_SET)) err(1, "fseeko(%s, %lld)", argv[3], - (long long)(32 + bzctrllen + bzdatalen)); + (long long)(sizeof(header) + bzctrllen + bzdatalen)); if ((epfbz2 = BZ2_bzReadOpen(&ebz2err, epf, 0, 0, NULL, 0)) == NULL) errx(1, "BZ2_bzReadOpen, bz2err = %d", ebz2err);