=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/cmp/regular.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- src/usr.bin/cmp/regular.c 1999/08/03 16:02:44 1.3 +++ src/usr.bin/cmp/regular.c 2000/10/12 10:03:20 1.4 @@ -1,4 +1,4 @@ -/* $OpenBSD: regular.c,v 1.3 1999/08/03 16:02:44 mickey Exp $ */ +/* $OpenBSD: regular.c,v 1.4 2000/10/12 10:03:20 kevlo Exp $ */ /* $NetBSD: regular.c,v 1.2 1995/09/08 03:22:59 tls Exp $ */ /*- @@ -38,7 +38,7 @@ #if 0 static char sccsid[] = "@(#)regular.c 8.3 (Berkeley) 4/2/94"; #else -static char rcsid[] = "$OpenBSD: regular.c,v 1.3 1999/08/03 16:02:44 mickey Exp $"; +static char rcsid[] = "$OpenBSD: regular.c,v 1.4 2000/10/12 10:03:20 kevlo Exp $"; #endif #endif /* not lint */ @@ -75,15 +75,20 @@ len2 -= skip2; length = MIN(len1, len2); - if (length > SIZE_T_MAX) - return (c_special(fd1, file1, skip1, fd2, file2, skip2)); + if (length > SIZE_T_MAX) { + mmap_failed: + c_special(fd1, file1, skip1, fd2, file2, skip2); + return; + } if ((p1 = mmap(NULL, (size_t)length, PROT_READ, - MAP_PRIVATE, fd1, skip1)) == (u_char *)-1) - err(ERR_EXIT, "%s", file1); + MAP_PRIVATE, fd1, skip1)) == MAP_FAILED) + goto mmap failed; if ((p2 = mmap(NULL, (size_t)length, PROT_READ, - MAP_PRIVATE, fd2, skip2)) == (u_char *)-1) - err(ERR_EXIT, "%s", file2); + MAP_PRIVATE, fd2, skip2)) == MAP_FAILED) { + munmap(p1, (size_t)length); + goto mmap_failed; + } dfound = 0; for (byte = line = 1; length--; ++p1, ++p2, ++byte) {