This file lists all bug fixes, changes, etc., made since the AWK book
was sent to the printers in August 1987.
+Dec 15, 2022:
+ Force hex escapes in strings to be no more than two characters,
+ as they already are in regular expressions. This brings internal
+ consistency, as well as consistency with gawk. Thanks to
+ Arnold Robbins.
+
Sep 12, 2022:
adjbuf minlen error (cannot be 0) in cat, resulting in NULL pbuf.
discovered by todd miller. also use-after-free issue with
-/* $OpenBSD: lex.c,v 1.28 2022/09/01 15:21:28 millert Exp $ */
+/* $OpenBSD: lex.c,v 1.29 2023/09/09 18:59:43 millert Exp $ */
/****************************************************************
Copyright (C) Lucent Technologies 1997
All Rights Reserved
break;
case 'x': /* hex \x0-9a-fA-F + */
- { char xbuf[100], *px;
- for (px = xbuf; (c = input()) != 0 && px-xbuf < 100-2; ) {
- if (isdigit(c)
- || (c >= 'a' && c <= 'f')
- || (c >= 'A' && c <= 'F'))
- *px++ = c;
- else
+ {
+ int i;
+
+ n = 0;
+ for (i = 1; i <= 2; i++) {
+ c = input();
+ if (c == 0)
+ break;
+ if (isxdigit(c)) {
+ c = tolower(c);
+ n *= 16;
+ if (isdigit(c))
+ n += (c - '0');
+ else
+ n += 10 + (c - 'a');
+ } else
break;
}
- *px = 0;
- unput(c);
- sscanf(xbuf, "%x", (unsigned int *) &n);
- *bp++ = n;
+ if (n)
+ *bp++ = n;
+ else
+ unput(c);
break;
}
-/* $OpenBSD: main.c,v 1.56 2022/09/21 01:42:58 millert Exp $ */
+/* $OpenBSD: main.c,v 1.57 2023/09/09 18:59:43 millert Exp $ */
/****************************************************************
Copyright (C) Lucent Technologies 1997
All Rights Reserved
THIS SOFTWARE.
****************************************************************/
-const char *version = "version 20220912";
+const char *version = "version 20221215";
#define DEBUG
#include <stdio.h>