diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2019-12-17 10:49:55 -0300 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2019-12-17 10:49:55 -0300 |
commit | e0cbaa50fa7e97a8b7404041a59caac47b3949a5 (patch) | |
tree | aca8070ca14b0823b2bec895610f43d0013feffe | |
parent | 37474873203f247552021ab5856ab69d777166a2 (diff) | |
download | lua-e0cbaa50fa7e97a8b7404041a59caac47b3949a5.tar.gz lua-e0cbaa50fa7e97a8b7404041a59caac47b3949a5.tar.bz2 lua-e0cbaa50fa7e97a8b7404041a59caac47b3949a5.zip |
Added test for NULL in string.format("%p")
ISO C states that standard library functions should not be called
with NULL arguments, unless stated otherwise. 'sprintf' does not
state otherwise, and it doesn't hurt to be on the safe side.
-rw-r--r-- | lstrlib.c | 2 |
1 files changed, 2 insertions, 0 deletions
@@ -1271,6 +1271,8 @@ static int str_format (lua_State *L) { | |||
1271 | } | 1271 | } |
1272 | case 'p': { | 1272 | case 'p': { |
1273 | const void *p = lua_topointer(L, arg); | 1273 | const void *p = lua_topointer(L, arg); |
1274 | if (p == NULL) | ||
1275 | p = "(null)"; /* NULL not a valid parameter in ISO C 'printf' */ | ||
1274 | nb = l_sprintf(buff, maxitem, form, p); | 1276 | nb = l_sprintf(buff, maxitem, form, p); |
1275 | break; | 1277 | break; |
1276 | } | 1278 | } |