Skip to content

Commit

Permalink
Prevent undefined behavior in memcpy by adding nullptr checks
Browse files Browse the repository at this point in the history
  • Loading branch information
sammycage committed Dec 14, 2024
1 parent 1e6a362 commit 5e3c05b
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 6 deletions.
4 changes: 1 addition & 3 deletions source/plutovg-canvas.c
Original file line number Diff line number Diff line change
Expand Up @@ -330,9 +330,7 @@ float plutovg_canvas_get_dash_offset(const plutovg_canvas_t* canvas)
void plutovg_canvas_set_dash_array(plutovg_canvas_t* canvas, const float* dashes, int ndashes)
{
plutovg_array_clear(canvas->state->stroke.dash.array);
if(dashes && ndashes > 0) {
plutovg_array_append_data(canvas->state->stroke.dash.array, dashes, ndashes);
}
plutovg_array_append_data(canvas->state->stroke.dash.array, dashes, ndashes);
}

int plutovg_canvas_get_dash_array(const plutovg_canvas_t* canvas, const float** dashes)
Expand Down
8 changes: 5 additions & 3 deletions source/plutovg-utils.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,11 @@

#define plutovg_array_append_data(array, newdata, count) \
do { \
plutovg_array_ensure(array, count); \
memcpy((array).data + (array).size, newdata, (count) * sizeof((newdata)[0])); \
(array).size += count; \
if(newdata && count > 0) { \
plutovg_array_ensure(array, count); \
memcpy((array).data + (array).size, newdata, (count) * sizeof((newdata)[0])); \
(array).size += count; \
} \
} while(0)

#define plutovg_array_append(array, other) plutovg_array_append_data(array, (other).data, (other).size)
Expand Down

0 comments on commit 5e3c05b

Please sign in to comment.