svn commit: r305822 - head/usr.bin/bsdiff/bspatch

Ed Maste emaste at FreeBSD.org
Thu Sep 15 01:58:13 UTC 2016


Author: emaste
Date: Thu Sep 15 01:58:12 2016
New Revision: 305822
URL: https://svnweb.freebsd.org/changeset/base/305822

Log:
  bspatch: use #define for header size instead of magic number
  
  Reviewed by:	allanjude, kib
  Sponsored by:	The FreeBSD Foundation
  Differential Revision:	https://reviews.freebsd.org/D7861

Modified:
  head/usr.bin/bsdiff/bspatch/bspatch.c

Modified: head/usr.bin/bsdiff/bspatch/bspatch.c
==============================================================================
--- head/usr.bin/bsdiff/bspatch/bspatch.c	Thu Sep 15 01:55:18 2016	(r305821)
+++ head/usr.bin/bsdiff/bspatch/bspatch.c	Thu Sep 15 01:58:12 2016	(r305822)
@@ -44,6 +44,7 @@ __FBSDID("$FreeBSD$");
 #include <fcntl.h>
 #include <libgen.h>
 #include <limits.h>
+#include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -52,6 +53,7 @@ __FBSDID("$FreeBSD$");
 #ifndef O_BINARY
 #define O_BINARY 0
 #endif
+#define HEADER_SIZE 32
 
 static char *newfile;
 static int dirfd = -1;
@@ -101,12 +103,11 @@ int main(int argc, char *argv[])
 	int newfd, oldfd;
 	off_t oldsize, newsize;
 	off_t bzctrllen, bzdatalen;
-	u_char header[32], buf[8];
+	u_char header[HEADER_SIZE], buf[8];
 	u_char *old, *new;
 	off_t oldpos, newpos;
 	off_t ctrl[3];
-	off_t lenread;
-	off_t i;
+	off_t i, lenread, offset;
 #ifdef HAVE_CAPSICUM
 	cap_rights_t rights_dir, rights_ro, rights_wr;
 #endif
@@ -181,7 +182,7 @@ int main(int argc, char *argv[])
 	*/
 
 	/* Read header */
-	if (fread(header, 1, 32, f) < 32) {
+	if (fread(header, 1, HEADER_SIZE, f) < HEADER_SIZE) {
 		if (feof(f))
 			errx(1, "Corrupt patch");
 		err(1, "fread(%s)", argv[3]);
@@ -195,27 +196,27 @@ int main(int argc, char *argv[])
 	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 - HEADER_SIZE ||
+	    bzdatalen < 0 || bzctrllen + HEADER_SIZE > 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))
-		err(1, "fseeko(%s, %lld)", argv[3],
-		    (long long)32);
+	offset = HEADER_SIZE;
+	if (fseeko(cpf, offset, SEEK_SET))
+		err(1, "fseeko(%s, %jd)", argv[3], (intmax_t)offset);
 	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))
-		err(1, "fseeko(%s, %lld)", argv[3],
-		    (long long)(32 + bzctrllen));
+	offset += bzctrllen;
+	if (fseeko(dpf, offset, SEEK_SET))
+		err(1, "fseeko(%s, %jd)", argv[3], (intmax_t)offset);
 	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))
-		err(1, "fseeko(%s, %lld)", argv[3],
-		    (long long)(32 + bzctrllen + bzdatalen));
+	offset += bzdatalen;
+	if (fseeko(epf, offset, SEEK_SET))
+		err(1, "fseeko(%s, %jd)", argv[3], (intmax_t)offset);
 	if ((epfbz2 = BZ2_bzReadOpen(&ebz2err, epf, 0, 0, NULL, 0)) == NULL)
 		errx(1, "BZ2_bzReadOpen, bz2err = %d", ebz2err);
 


More information about the svn-src-all mailing list