> nope, only ssize_t is guaranteed. This is the only way i could think off.
Index: util.c =================================================================== RCS file: /home/alex/scm/cvsync/src/usr.bin/grep/util.c,v retrieving revision 1.41 diff -u -r1.41 util.c --- util.c 11 Jul 2011 20:43:21 -0000 1.41 +++ util.c 17 Jul 2011 12:01:56 -0000 @@ -169,7 +169,13 @@ { regmatch_t pmatch; int c, i, r; - int offset; + regoff_t offset; + + /* size_t will be converted to regoff_t. ssize_t is guaranteed to fit + * into regoff_t */ + if (l->len > SSIZE_MAX) { + errx(2, "Line is too big to process"); + } c = 0; i = 0; @@ -444,7 +450,7 @@ #ifdef SMALL return 0; #else - int j; + regoff_t j; int rtrnVal = REG_NOMATCH; pmatch->rm_so = -1;