diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2006-09-18 13:33:14 -0300 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2006-09-18 13:33:14 -0300 |
| commit | 93d3c8450c7a78321cf7f9db9173d46c62ebe958 (patch) | |
| tree | ba2626af9edbf90afdb02edb836020c693742d99 /bugs | |
| parent | 8667f29c3b9e56fb6bd4f9de8c096e0331be555d (diff) | |
| download | lua-93d3c8450c7a78321cf7f9db9173d46c62ebe958.tar.gz lua-93d3c8450c7a78321cf7f9db9173d46c62ebe958.tar.bz2 lua-93d3c8450c7a78321cf7f9db9173d46c62ebe958.zip | |
bug: string.format("%") reads past the string
Diffstat (limited to 'bugs')
| -rw-r--r-- | bugs | 54 |
1 files changed, 54 insertions, 0 deletions
| @@ -798,6 +798,32 @@ patch = [[ | |||
| 798 | } | 798 | } |
| 799 | 799 | ||
| 800 | 800 | ||
| 801 | Bug{ | ||
| 802 | what = [[Some "not not exp" may not result in boolean values]], | ||
| 803 | report = [[]], | ||
| 804 | since = [[4.0]], | ||
| 805 | example = [[ | ||
| 806 | -- should print false, but prints nil | ||
| 807 | print(not not (nil and 4)) | ||
| 808 | ]], | ||
| 809 | patch = [[]], | ||
| 810 | } | ||
| 811 | |||
| 812 | |||
| 813 | Bug{ | ||
| 814 | what = [[On some machines, closing a "piped file" (created with io.popen) | ||
| 815 | may crash Lua]], | ||
| 816 | report = [[]], | ||
| 817 | since = [[5.0]], | ||
| 818 | example = [[ | ||
| 819 | -- only on some machines | ||
| 820 | f = io.popen("ls") | ||
| 821 | f:close() | ||
| 822 | ]], | ||
| 823 | patch = [[]], | ||
| 824 | } | ||
| 825 | |||
| 826 | |||
| 801 | 827 | ||
| 802 | ----------------------------------------------------------------- | 828 | ----------------------------------------------------------------- |
| 803 | -- Lua 5.1 | 829 | -- Lua 5.1 |
| @@ -1095,3 +1121,31 @@ patch = [[ | |||
| 1095 | ]], | 1121 | ]], |
| 1096 | 1122 | ||
| 1097 | } | 1123 | } |
| 1124 | |||
| 1125 | |||
| 1126 | Bug{ | ||
| 1127 | what = [[string.format("%") reads past the string]], | ||
| 1128 | report = [[Roberto, on 09/2006]], | ||
| 1129 | since = [[5.0 (at least)]], | ||
| 1130 | example = [[print(string.format("%"))]], | ||
| 1131 | patch = [[ | ||
| 1132 | *lstrlib.c: | ||
| 1133 | @@ -723,7 +723,7 @@ | ||
| 1134 | |||
| 1135 | static const char *scanformat (lua_State *L, const char *strfrmt, char *form) { const char *p = strfrmt; | ||
| 1136 | - while (strchr(FLAGS, *p)) p++; /* skip flags */ | ||
| 1137 | + while (*p != '\0' && strchr(FLAGS, *p) != NULL) p++; /* skip flags */ | ||
| 1138 | if ((size_t)(p - strfrmt) >= sizeof(FLAGS)) | ||
| 1139 | luaL_error(L, "invalid format (repeated flags)"); | ||
| 1140 | if (isdigit(uchar(*p))) p++; /* skip width */ | ||
| 1141 | ]], | ||
| 1142 | } | ||
| 1143 | |||
| 1144 | |||
| 1145 | Bug{ | ||
| 1146 | what = [[ ]], | ||
| 1147 | report = [[ ]], | ||
| 1148 | since = [[ ]], | ||
| 1149 | example = [[ ]], | ||
| 1150 | patch = [[ ]], | ||
| 1151 | } | ||
