Commit d43277c534904dc31d14bfb0dc934f3cfbe2dab5
1 parent
57a943c4
Fix missing strnlen problems
Fix missing strnlen (a GNU extension) problems by using qemu_strnlen used for user emulators also for system emulators. Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Showing
5 changed files
with
15 additions
and
23 deletions
block.c
@@ -225,7 +225,7 @@ static BlockDriver *find_protocol(const char *filename) | @@ -225,7 +225,7 @@ static BlockDriver *find_protocol(const char *filename) | ||
225 | { | 225 | { |
226 | BlockDriver *drv1; | 226 | BlockDriver *drv1; |
227 | char protocol[128]; | 227 | char protocol[128]; |
228 | - int len = strnlen(filename, 127)+1; | 228 | + int len = qemu_strnlen(filename, 127) + 1; |
229 | const char *p; | 229 | const char *p; |
230 | 230 | ||
231 | #ifdef _WIN32 | 231 | #ifdef _WIN32 |
bsd-user/uaccess.c
@@ -37,17 +37,6 @@ abi_long copy_to_user(abi_ulong gaddr, void *hptr, size_t len) | @@ -37,17 +37,6 @@ abi_long copy_to_user(abi_ulong gaddr, void *hptr, size_t len) | ||
37 | return ret; | 37 | return ret; |
38 | } | 38 | } |
39 | 39 | ||
40 | -/* XXX: use host strnlen if available ? */ | ||
41 | -static int qemu_strnlen(const char *s, int max_len) | ||
42 | -{ | ||
43 | - int i; | ||
44 | - for(i = 0; i < max_len; i++) { | ||
45 | - if (s[i] == '\0') | ||
46 | - break; | ||
47 | - } | ||
48 | - return i; | ||
49 | -} | ||
50 | - | ||
51 | /* Return the length of a string in target memory or -TARGET_EFAULT if | 40 | /* Return the length of a string in target memory or -TARGET_EFAULT if |
52 | access error */ | 41 | access error */ |
53 | abi_long target_strlen(abi_ulong guest_addr1) | 42 | abi_long target_strlen(abi_ulong guest_addr1) |
cutils.c
@@ -109,6 +109,19 @@ int stristart(const char *str, const char *val, const char **ptr) | @@ -109,6 +109,19 @@ int stristart(const char *str, const char *val, const char **ptr) | ||
109 | return 1; | 109 | return 1; |
110 | } | 110 | } |
111 | 111 | ||
112 | +/* XXX: use host strnlen if available ? */ | ||
113 | +int qemu_strnlen(const char *s, int max_len) | ||
114 | +{ | ||
115 | + int i; | ||
116 | + | ||
117 | + for(i = 0; i < max_len; i++) { | ||
118 | + if (s[i] == '\0') { | ||
119 | + break; | ||
120 | + } | ||
121 | + } | ||
122 | + return i; | ||
123 | +} | ||
124 | + | ||
112 | time_t mktimegm(struct tm *tm) | 125 | time_t mktimegm(struct tm *tm) |
113 | { | 126 | { |
114 | time_t t; | 127 | time_t t; |
linux-user/uaccess.c
@@ -37,17 +37,6 @@ abi_long copy_to_user(abi_ulong gaddr, void *hptr, size_t len) | @@ -37,17 +37,6 @@ abi_long copy_to_user(abi_ulong gaddr, void *hptr, size_t len) | ||
37 | return ret; | 37 | return ret; |
38 | } | 38 | } |
39 | 39 | ||
40 | -/* XXX: use host strnlen if available ? */ | ||
41 | -static int qemu_strnlen(const char *s, int max_len) | ||
42 | -{ | ||
43 | - int i; | ||
44 | - for(i = 0; i < max_len; i++) { | ||
45 | - if (s[i] == '\0') | ||
46 | - break; | ||
47 | - } | ||
48 | - return i; | ||
49 | -} | ||
50 | - | ||
51 | /* Return the length of a string in target memory or -TARGET_EFAULT if | 40 | /* Return the length of a string in target memory or -TARGET_EFAULT if |
52 | access error */ | 41 | access error */ |
53 | abi_long target_strlen(abi_ulong guest_addr1) | 42 | abi_long target_strlen(abi_ulong guest_addr1) |
qemu-common.h
@@ -109,6 +109,7 @@ void pstrcpy(char *buf, int buf_size, const char *str); | @@ -109,6 +109,7 @@ void pstrcpy(char *buf, int buf_size, const char *str); | ||
109 | char *pstrcat(char *buf, int buf_size, const char *s); | 109 | char *pstrcat(char *buf, int buf_size, const char *s); |
110 | int strstart(const char *str, const char *val, const char **ptr); | 110 | int strstart(const char *str, const char *val, const char **ptr); |
111 | int stristart(const char *str, const char *val, const char **ptr); | 111 | int stristart(const char *str, const char *val, const char **ptr); |
112 | +int qemu_strnlen(const char *s, int max_len); | ||
112 | time_t mktimegm(struct tm *tm); | 113 | time_t mktimegm(struct tm *tm); |
113 | int qemu_fls(int i); | 114 | int qemu_fls(int i); |
114 | 115 |