From d5f2c28536f1645e3da25fa3f8da5a0a45404dc4 Mon Sep 17 00:00:00 2001 From: Christos Zoulas Date: Sat, 11 Jul 2015 14:41:37 +0000 Subject: [PATCH] PR/466: Windows fixes. --- ChangeLog | 4 ++++ src/file.h | 4 +++- src/gmtime_r.c | 6 +++--- src/localtime_r.c | 6 +++--- src/magic.c | 10 +++++++++- src/readelf.c | 13 ++++++++----- 6 files changed, 30 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1fb44a26..3c0be5e9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2015-07-11 10:35 Christos Zoulas + + * Windows fixes PR/466 (Jason Hood) + 2015-07-09 10:35 Christos Zoulas * release 5.24 diff --git a/src/file.h b/src/file.h index 03999f5e..00d2abec 100644 --- a/src/file.h +++ b/src/file.h @@ -27,7 +27,7 @@ */ /* * file.h - definitions for file(1) program - * @(#)$File: file.h,v 1.167 2015/02/14 17:19:29 christos Exp $ + * @(#)$File: file.h,v 1.168 2015/04/09 20:01:41 christos Exp $ */ #ifndef __file_h__ @@ -44,9 +44,11 @@ #define SIZE_T_FORMAT "" #endif #define INT64_T_FORMAT "I64" + #define INTMAX_T_FORMAT "I64" #else #define SIZE_T_FORMAT "z" #define INT64_T_FORMAT "ll" + #define INTMAX_T_FORMAT "j" #endif #include /* Include that here, to make sure __P gets defined */ diff --git a/src/gmtime_r.c b/src/gmtime_r.c index 2f4d0228..7e27ed6f 100644 --- a/src/gmtime_r.c +++ b/src/gmtime_r.c @@ -1,15 +1,15 @@ -/* $File: asctime_r.c,v 1.1 2012/05/15 17:14:36 christos Exp $ */ +/* $File: gmtime_r.c,v 1.1 2015/01/09 19:28:32 christos Exp $ */ #include "file.h" #ifndef lint -FILE_RCSID("@(#)$File: asctime_r.c,v 1.1 2012/05/15 17:14:36 christos Exp $") +FILE_RCSID("@(#)$File: gmtime_r.c,v 1.1 2015/01/09 19:28:32 christos Exp $") #endif /* lint */ #include #include /* asctime_r is not thread-safe anyway */ struct tm * -gmtime_r(const time_t t, struct tm *tm) +gmtime_r(const time_t *t, struct tm *tm) { struct tm *tmp = gmtime(t); if (tmp == NULL) diff --git a/src/localtime_r.c b/src/localtime_r.c index a8eaaba3..35c3b40f 100644 --- a/src/localtime_r.c +++ b/src/localtime_r.c @@ -1,15 +1,15 @@ -/* $File: asctime_r.c,v 1.1 2012/05/15 17:14:36 christos Exp $ */ +/* $File: localtime_r.c,v 1.1 2015/01/09 19:28:32 christos Exp $ */ #include "file.h" #ifndef lint -FILE_RCSID("@(#)$File: asctime_r.c,v 1.1 2012/05/15 17:14:36 christos Exp $") +FILE_RCSID("@(#)$File: localtime_r.c,v 1.1 2015/01/09 19:28:32 christos Exp $") #endif /* lint */ #include #include /* asctime_r is not thread-safe anyway */ struct tm * -localtime_r(const time_t t, struct tm *tm) +localtime_r(const time_t *t, struct tm *tm) { struct tm *tmp = localtime(t); if (tmp == NULL) diff --git a/src/magic.c b/src/magic.c index c779f5c3..59b7e45b 100644 --- a/src/magic.c +++ b/src/magic.c @@ -33,7 +33,7 @@ #include "file.h" #ifndef lint -FILE_RCSID("@(#)$File: magic.c,v 1.92 2015/01/02 21:29:39 christos Exp $") +FILE_RCSID("@(#)$File: magic.c,v 1.93 2015/04/15 23:47:58 christos Exp $") #endif /* lint */ #include "magic.h" @@ -137,6 +137,14 @@ _w32_get_magic_relative_to(char **hmagicpath, HINSTANCE module) PathRemoveFileSpecA(dllpath); + if (module) { + char exepath[MAX_PATH]; + GetModuleFileNameA(NULL, exepath, MAX_PATH); + PathRemoveFileSpecA(exepath); + if (stricmp(exepath, dllpath) == 0) + goto out; + } + sp = strlen(dllpath); if (sp > 3 && stricmp(&dllpath[sp - 3], "bin") == 0) { _w32_append_path(hmagicpath, diff --git a/src/readelf.c b/src/readelf.c index 4062ed66..ab36d267 100644 --- a/src/readelf.c +++ b/src/readelf.c @@ -27,7 +27,7 @@ #include "file.h" #ifndef lint -FILE_RCSID("@(#)$File: readelf.c,v 1.119 2015/04/09 20:01:41 christos Exp $") +FILE_RCSID("@(#)$File: readelf.c,v 1.120 2015/06/16 14:18:07 christos Exp $") #endif #ifdef BUILTIN_ELF @@ -1054,9 +1054,11 @@ doshn(struct magic_set *ms, int clazz, int swap, int fd, off_t off, int num, case SHT_NOTE: if (xsh_size + xsh_offset > (uintmax_t)fsize) { if (file_printf(ms, - ", note offset/size 0x%jx+0x%jx exceeds" - " file size 0x%jx", (uintmax_t)xsh_offset, - (uintmax_t)xsh_size, (uintmax_t)fsize) == -1) + ", note offset/size 0x%" INTMAX_T_FORMAT + "x+0x%" INTMAX_T_FORMAT "x exceeds" + " file size 0x%" INTMAX_T_FORMAT "x", + (uintmax_t)xsh_offset, (uintmax_t)xsh_size, + (uintmax_t)fsize) == -1) return -1; return 0; } @@ -1065,7 +1067,8 @@ doshn(struct magic_set *ms, int clazz, int swap, int fd, off_t off, int num, " for note"); return -1; } - if (pread(fd, nbuf, xsh_size, xsh_offset) < (ssize_t)xsh_size) { + if (pread(fd, nbuf, xsh_size, xsh_offset) < + (ssize_t)xsh_size) { file_badread(ms); free(nbuf); return -1; -- 2.40.0