diff options
| author | 2022-11-02 13:18:38 +0100 | |
|---|---|---|
| committer | 2022-11-02 13:18:38 +0100 | |
| commit | 8778188bc3d4755499563aca618bf51f8f9f2444 (patch) | |
| tree | f261973cbcb8b2de181075886ee12f61ed04abe7 | |
| parent | c3af449543795ad4d3ab178120ff69e90fdd2cc8 (diff) | |
| download | libplist-8778188bc3d4755499563aca618bf51f8f9f2444.tar.gz libplist-8778188bc3d4755499563aca618bf51f8f9f2444.tar.bz2 | |
jplist: Prevent multiplication overflow by casting to larger type
Found by CodeQL
| -rw-r--r-- | src/jplist.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/jplist.c b/src/jplist.c index e615299..d12540e 100644 --- a/src/jplist.c +++ b/src/jplist.c | |||
| @@ -324,7 +324,7 @@ static int node_estimate_size(node_t *node, uint64_t *size, uint32_t depth, int | |||
| 324 | *size += n_children-1; // number of ':' and ',' | 324 | *size += n_children-1; // number of ':' and ',' |
| 325 | if (prettify) { | 325 | if (prettify) { |
| 326 | *size += n_children; // number of '\n' and extra space | 326 | *size += n_children; // number of '\n' and extra space |
| 327 | *size += n_children * (depth+1); // indent for every 2nd child | 327 | *size += (uint64_t)n_children * (depth+1); // indent for every 2nd child |
| 328 | *size += 1; // additional '\n' | 328 | *size += 1; // additional '\n' |
| 329 | } | 329 | } |
| 330 | break; | 330 | break; |
| @@ -333,7 +333,7 @@ static int node_estimate_size(node_t *node, uint64_t *size, uint32_t depth, int | |||
| 333 | *size += n_children-1; // number of ',' | 333 | *size += n_children-1; // number of ',' |
| 334 | if (prettify) { | 334 | if (prettify) { |
| 335 | *size += n_children; // number of '\n' | 335 | *size += n_children; // number of '\n' |
| 336 | *size += n_children * ((depth+1)<<1); // indent for every child | 336 | *size += (uint64_t)n_children * ((depth+1)<<1); // indent for every child |
| 337 | *size += 1; // additional '\n' | 337 | *size += 1; // additional '\n' |
| 338 | } | 338 | } |
| 339 | break; | 339 | break; |
