ntohl() returns uint32_t so it cannot be < 0. Since we're storing
authormillert <millert@openbsd.org>
Thu, 27 Apr 2017 23:54:08 +0000 (23:54 +0000)
committermillert <millert@openbsd.org>
Thu, 27 Apr 2017 23:54:08 +0000 (23:54 +0000)
the result in an int check for > INT_MAX instead.  OK bluhm@

lib/libc/nls/catopen.c

index af7869b..e03ebaf 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: catopen.c,v 1.20 2016/09/21 04:38:56 guenther Exp $ */
+/*     $OpenBSD: catopen.c,v 1.21 2017/04/27 23:54:08 millert Exp $ */
 /*-
  * Copyright (c) 1996 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -266,7 +266,7 @@ verify_msgcat(nl_catd catd)
 
                /* retrieve largest string offset */
                for (j = index; j < nmsgs; j++) {
-                       if (ntohl(msg[j].__offset) < 0)
+                       if (ntohl(msg[j].__offset) > INT_MAX)
                                return (1);
                        off = MAXIMUM(off, ntohl(msg[j].__offset));
                }