git: 955208d636fc - stable/14 - ota: Merge 20240728 (bsd-feature) from ota 3319c34a8713
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 01 Dec 2024 17:33:09 UTC
The branch stable/14 has been updated by imp:
URL: https://cgit.FreeBSD.org/src/commit/?id=955208d636fc453f655136dacf8ddc12287667d0
commit 955208d636fc453f655136dacf8ddc12287667d0
Author: Warner Losh <imp@FreeBSD.org>
AuthorDate: 2024-11-30 04:57:45 +0000
Commit: Warner Losh <imp@FreeBSD.org>
CommitDate: 2024-12-01 17:33:16 +0000
ota: Merge 20240728 (bsd-feature) from ota 3319c34a8713
Jul 28, 2024
Fixed readcsvrec resize segfault when reading csv records longer
than 8k. Thanks to Ozan Yigit.
mktime() added to bsd-features branch. Thanks to Todd Miller.
(cherry picked from commit 8d457988a72487b35ee3922671775d73169339e3)
---
contrib/one-true-awk/FIXES | 5 +++++
contrib/one-true-awk/awk.h | 1 +
contrib/one-true-awk/b.c | 2 +-
contrib/one-true-awk/lex.c | 1 +
contrib/one-true-awk/lib.c | 2 +-
contrib/one-true-awk/main.c | 2 +-
contrib/one-true-awk/run.c | 22 +++++++++++++++++++++-
7 files changed, 31 insertions(+), 4 deletions(-)
diff --git a/contrib/one-true-awk/FIXES b/contrib/one-true-awk/FIXES
index b59f32831e2c..ad8bce2645fd 100644
--- a/contrib/one-true-awk/FIXES
+++ b/contrib/one-true-awk/FIXES
@@ -25,6 +25,11 @@ THIS SOFTWARE.
This file lists all bug fixes, changes, etc., made since the
second edition of the AWK book was published in September 2023.
+Jul 28, 2024
+ Fixed readcsvrec resize segfault when reading csv records longer
+ than 8k. Thanks to Ozan Yigit.
+ mktime() added to bsd-features branch. Thanks to Todd Miller.
+
Jun 23, 2024
Fix signal for system-status test. Thanks to Tim van der Molen.
Rewrite if-else chain as switch. Thanks to Andrew Sukach.
diff --git a/contrib/one-true-awk/awk.h b/contrib/one-true-awk/awk.h
index 76c2a772b4ce..a57c1598d67e 100644
--- a/contrib/one-true-awk/awk.h
+++ b/contrib/one-true-awk/awk.h
@@ -162,6 +162,7 @@ extern Cell *symtabloc; /* SYMTAB */
#define FRSHIFT 20
#define FSYSTIME 21
#define FSTRFTIME 22
+#define FMKTIME 23
/* Node: parse tree is made of nodes, with Cell's at bottom */
diff --git a/contrib/one-true-awk/b.c b/contrib/one-true-awk/b.c
index a8f67785a6ea..455e6f812d3e 100644
--- a/contrib/one-true-awk/b.c
+++ b/contrib/one-true-awk/b.c
@@ -616,7 +616,7 @@ static void resize_gototab(fa *f, int state)
if (p == NULL)
overflo(__func__);
- // need to initialized the new memory to zero
+ // need to initialize the new memory to zero
size_t orig_size = f->gototab[state].allocated; // 2nd half of new mem is this size
memset(p + orig_size, 0, orig_size * sizeof(gtte)); // clean it out
diff --git a/contrib/one-true-awk/lex.c b/contrib/one-true-awk/lex.c
index 7c61bba46d13..c135db4dfb67 100644
--- a/contrib/one-true-awk/lex.c
+++ b/contrib/one-true-awk/lex.c
@@ -74,6 +74,7 @@ const Keyword keywords[] = { /* keep sorted: binary searched */
{ "log", FLOG, BLTIN },
{ "lshift", FLSHIFT, BLTIN },
{ "match", MATCHFCN, MATCHFCN },
+ { "mktime", FMKTIME, BLTIN },
{ "next", NEXT, NEXT },
{ "nextfile", NEXTFILE, NEXTFILE },
{ "or", FFOR, BLTIN },
diff --git a/contrib/one-true-awk/lib.c b/contrib/one-true-awk/lib.c
index 4b0addf21525..c2ed4f2607ac 100644
--- a/contrib/one-true-awk/lib.c
+++ b/contrib/one-true-awk/lib.c
@@ -231,7 +231,7 @@ int readrec(char **pbuf, int *pbufsize, FILE *inf, bool newflag) /* read one rec
char *rs = getsval(rsloc);
if (CSV) {
- c = readcsvrec(pbuf, pbufsize, inf, newflag);
+ c = readcsvrec(&buf, &bufsize, inf, newflag);
isrec = (c == EOF && rr == buf) ? false : true;
} else if (*rs && rs[1]) {
bool found;
diff --git a/contrib/one-true-awk/main.c b/contrib/one-true-awk/main.c
index 02d02991bce7..7d3ef84a580f 100644
--- a/contrib/one-true-awk/main.c
+++ b/contrib/one-true-awk/main.c
@@ -22,7 +22,7 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
THIS SOFTWARE.
****************************************************************/
-const char *version = "version 20240623";
+const char *version = "version 20240728";
#define DEBUG
#include <stdio.h>
diff --git a/contrib/one-true-awk/run.c b/contrib/one-true-awk/run.c
index 3f9f3d8626fc..286a601f3311 100644
--- a/contrib/one-true-awk/run.c
+++ b/contrib/one-true-awk/run.c
@@ -2069,7 +2069,7 @@ Cell *bltin(Node **a, int n) /* builtin functions. a[0] is type, a[1] is arg lis
FILE *fp;
int status = 0;
time_t tv;
- struct tm *tm;
+ struct tm *tm, tmbuf;
int estatus = 0;
t = ptoi(a[0]);
@@ -2223,6 +2223,26 @@ Cell *bltin(Node **a, int n) /* builtin functions. a[0] is type, a[1] is arg lis
else
u = fflush(fp);
break;
+ case FMKTIME:
+ memset(&tmbuf, 0, sizeof(tmbuf));
+ tm = &tmbuf;
+ t = sscanf(getsval(x), "%d %d %d %d %d %d %d",
+ &tm->tm_year, &tm->tm_mon, &tm->tm_mday, &tm->tm_hour,
+ &tm->tm_min, &tm->tm_sec, &tm->tm_isdst);
+ switch (t) {
+ case 6:
+ tm->tm_isdst = -1; /* let mktime figure it out */
+ /* FALLTHROUGH */
+ case 7:
+ tm->tm_year -= 1900;
+ tm->tm_mon--;
+ u = mktime(tm);
+ break;
+ default:
+ u = -1;
+ break;
+ }
+ break;
case FSYSTIME:
u = time((time_t *) 0);
break;