commit dabc100859385b31dcfbe62d04187d6947a12795 from: Stefan Sperling date: Tue Sep 22 22:11:12 2020 UTC check results of ARRAYLIST_ADD commit - 8cba9b5e693b0da4da8e2f83b51ab6ad42430851 commit + dabc100859385b31dcfbe62d04187d6947a12795 blob - 9f5f1eb495d016441ffc8a94e8401c15f8a67df9 blob + bb6e626bf9c86e3fa8598f4710496f81737f2c17 --- include/diff/arraylist.h +++ include/diff/arraylist.h @@ -77,7 +77,7 @@ #define ARRAYLIST_INSERT(NEW_ITEM_P, ARRAY_LIST, AT_IDX) do { \ ARRAYLIST_ADD(NEW_ITEM_P, ARRAY_LIST); \ - if ((AT_IDX) < (ARRAY_LIST).len) \ + if ((NEW_ITEM_P) && (AT_IDX) < (ARRAY_LIST).len) \ memmove(&(ARRAY_LIST).head[(AT_IDX) + 1], \ &(ARRAY_LIST).head[AT_IDX], \ ((ARRAY_LIST).len - (AT_IDX)) \ blob - ef073fa60e05e919ff3a03ae8837019c276589fe blob + 90ed1983d9b6b7ad3005b3a3b77230d52c12ba2d --- lib/diff_output.c +++ lib/diff_output.c @@ -108,6 +108,8 @@ diff_output_lines(struct diff_output_info *outinfo, FI outlen += rc; if (outinfo) { ARRAYLIST_ADD(offp, outinfo->line_offsets); + if (offp == NULL) + return ENOMEM; outoff += outlen; *offp = outoff; } @@ -195,6 +197,10 @@ diff_output_info_alloc(void) if (output_info != NULL) { ARRAYLIST_INIT(output_info->line_offsets, 128); ARRAYLIST_ADD(offp, output_info->line_offsets); + if (offp == NULL) { + diff_output_info_free(output_info); + return NULL; + } *offp = 0; } return output_info; blob - 0d570314af3d662046e4e1266c1bd783c95848a6 blob + 7d291c0f3ff566488d546354867dd8406c5f0291 --- lib/diff_output_unidiff.c +++ lib/diff_output_unidiff.c @@ -134,6 +134,8 @@ output_unidiff_chunk(struct diff_output_info *outinfo, return errno; if (outinfo) { ARRAYLIST_ADD(offp, outinfo->line_offsets); + if (offp == NULL) + return ENOMEM; outoff += rc; *offp = outoff; @@ -143,6 +145,8 @@ output_unidiff_chunk(struct diff_output_info *outinfo, return errno; if (outinfo) { ARRAYLIST_ADD(offp, outinfo->line_offsets); + if (offp == NULL) + return ENOMEM; outoff += rc; *offp = outoff; @@ -157,6 +161,8 @@ output_unidiff_chunk(struct diff_output_info *outinfo, return errno; if (outinfo) { ARRAYLIST_ADD(offp, outinfo->line_offsets); + if (offp == NULL) + return ENOMEM; outoff += rc; *offp = outoff;