The behavior of calloc() when being passed `0` as `nelem` is implementation
defined. It may return a NULL pointer.
Avoid this issue by checking before allocating. While doing so adjust the local
integer variables that are used to refer to memory offsets to `size_t`.
This issue was introced in commit
f91ac19299fe216a793ba6550dca06b688b31549. This
patch should be backported together with that commit.
(cherry picked from commit
b584b4475be09a20dea07f35c605487a1b73425e)
Signed-off-by: Willy Tarreau <w@1wt.eu>
*/
int pattern_finalize_config(void)
{
- int len = 0;
- int unassigned_pos = 0;
+ size_t len = 0;
+ size_t unassigned_pos = 0;
int next_unique_id = 0;
- int i, j;
+ size_t i, j;
struct pat_ref *ref, **arr;
struct list pr = LIST_HEAD_INIT(pr);
unassigned_pos++;
}
+ if (len == 0) {
+ return 0;
+ }
+
arr = calloc(len, sizeof(*arr));
if (arr == NULL) {
ha_alert("Out of memory error.\n");