On Mon, Jun 18, 2018 at 12:21:52PM +0100, Huw Davies wrote:
On Mon, Jun 18, 2018 at 05:09:32AM -0600, Alex Henrie wrote:
Signed-off-by: Alex Henrie <alexhenrie24(a)gmail.com> --- dlls/ntdll/nt.c | 172 ++++++++++++++++++++++++++++++++++++++++ dlls/ntdll/tests/info.c | 11 ++- 2 files changed, 181 insertions(+), 2 deletions(-)
diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c index dc0ce04f42..40e36c0ffd 100644 --- a/dlls/ntdll/nt.c +++ b/dlls/ntdll/nt.c @@ -1850,6 +1879,127 @@ static NTSTATUS create_logical_proc_info(SYSTEM_LOGICAL_PROCESSOR_INFORMATION ** } #endif
+static inline void copy_smbios_string(char **buffer, char *s, size_t len) +{ + if (!len) return; + strcpy(*buffer, s); + *buffer += len + 1; +} + +#ifdef linux + +#define FWSS 128 /* firmware string size */ + +static void get_smbios_string(const char *path, char *s, size_t *len) +{ + FILE *file = fopen(path, "r"); + if (!file) + { + *len = 0; + return; + } + + *len = fread(s, 1, FWSS - 1, file);
That's pretty ugly. This function really shouldn't assume the size of the buffer is has to play with.
Note, it may be more convenient to use a separate 'size' [in] parameter rather than use len as [in,out]. Huw.