From fcd70a75653472991a640d265a5eed497426dfcd Mon Sep 17 00:00:00 2001 From: Daniel Eischen Date: Mon, 4 Jun 2001 12:36:07 +0000 Subject: [PATCH] Properly initialize a temporary FILE that is allocated off the stack. The change to reuse _up from FILE (to allow FILE to grow without changing size) overlooked FILE being allocated off the stack. Approved by: sobomax --- lib/libc/stdio/local.h | 7 +++++++ lib/libc/stdio/sscanf.c | 3 +++ 2 files changed, 10 insertions(+) diff --git a/lib/libc/stdio/local.h b/lib/libc/stdio/local.h index 4f5242a917d1..3e498d36d4fc 100644 --- a/lib/libc/stdio/local.h +++ b/lib/libc/stdio/local.h @@ -103,3 +103,10 @@ struct __sFILEX { free((char *)(fp)->_lb._base); \ (fp)->_lb._base = NULL; \ } + +#define INITEXTRA(fp) { \ + (fp)->_extra->_up = NULL; \ + (fp)->_extra->fl_mutex = PTHREAD_MUTEX_INITIALIZER; \ + (fp)->_extra->fl_owner = NULL; \ + (fp)->_extra->fl_count = 0; \ +} diff --git a/lib/libc/stdio/sscanf.c b/lib/libc/stdio/sscanf.c index 2ed797efdf90..c8877883bbc6 100644 --- a/lib/libc/stdio/sscanf.c +++ b/lib/libc/stdio/sscanf.c @@ -77,6 +77,7 @@ sscanf(str, fmt, va_alist) { int ret; va_list ap; + struct __sFILEX extra; FILE f; f._file = -1; @@ -86,6 +87,8 @@ sscanf(str, fmt, va_alist) f._read = eofread; f._ub._base = NULL; f._lb._base = NULL; + f._extra = &extra; + INITEXTRA(&f); #if __STDC__ va_start(ap, fmt); #else