diff options
| author | 2026-01-17 16:35:19 +0100 | |
|---|---|---|
| committer | 2026-01-17 16:35:19 +0100 | |
| commit | 001a59eef3b2a981f28af74ea82e1fc06b0c4275 (patch) | |
| tree | b1893557c9d6863f9176b9876686257a5f73aab9 | |
| parent | e45099fb21b679aa0cdb0db394587bb5ba675b0c (diff) | |
| download | libplist-001a59eef3b2a981f28af74ea82e1fc06b0c4275.tar.gz libplist-001a59eef3b2a981f28af74ea82e1fc06b0c4275.tar.bz2 | |
plistutil: Use proper error description for new error codes
| -rw-r--r-- | src/bplist.c | 2 | ||||
| -rw-r--r-- | tools/plistutil.c | 17 |
2 files changed, 18 insertions, 1 deletions
diff --git a/src/bplist.c b/src/bplist.c index 254c0ff..8d50f2e 100644 --- a/src/bplist.c +++ b/src/bplist.c | |||
| @@ -831,7 +831,7 @@ static plist_t parse_bin_node_at_index(struct bplist_data *bplist, uint32_t node | |||
| 831 | void *node_level = ptr_array_index(bplist->used_indexes, bplist->level); | 831 | void *node_level = ptr_array_index(bplist->used_indexes, bplist->level); |
| 832 | if (node_i == node_level) { | 832 | if (node_i == node_level) { |
| 833 | PLIST_BIN_ERR("recursion detected in binary plist\n"); | 833 | PLIST_BIN_ERR("recursion detected in binary plist\n"); |
| 834 | bplist->err = PLIST_ERR_PARSE; | 834 | bplist->err = PLIST_ERR_CIRCULAR_REF; |
| 835 | return NULL; | 835 | return NULL; |
| 836 | } | 836 | } |
| 837 | } | 837 | } |
diff --git a/tools/plistutil.c b/tools/plistutil.c index 7e4eb67..c984da2 100644 --- a/tools/plistutil.c +++ b/tools/plistutil.c | |||
| @@ -357,6 +357,14 @@ int main(int argc, char *argv[]) | |||
| 357 | switch (output_res) { | 357 | switch (output_res) { |
| 358 | case PLIST_ERR_SUCCESS: | 358 | case PLIST_ERR_SUCCESS: |
| 359 | break; | 359 | break; |
| 360 | case PLIST_ERR_CIRCULAR_REF: | ||
| 361 | fprintf(stderr, "ERROR: Circular reference detected.\n"); | ||
| 362 | ret = 5; | ||
| 363 | break; | ||
| 364 | case PLIST_ERR_MAX_NESTING: | ||
| 365 | fprintf(stderr, "ERROR: Output plist data exceeds maximum nesting depth.\n"); | ||
| 366 | ret = 4; | ||
| 367 | break; | ||
| 360 | case PLIST_ERR_FORMAT: | 368 | case PLIST_ERR_FORMAT: |
| 361 | fprintf(stderr, "ERROR: Input plist data is not compatible with output format.\n"); | 369 | fprintf(stderr, "ERROR: Input plist data is not compatible with output format.\n"); |
| 362 | ret = 2; | 370 | ret = 2; |
| @@ -364,6 +372,7 @@ int main(int argc, char *argv[]) | |||
| 364 | default: | 372 | default: |
| 365 | fprintf(stderr, "ERROR: Failed to convert plist data (%d)\n", output_res); | 373 | fprintf(stderr, "ERROR: Failed to convert plist data (%d)\n", output_res); |
| 366 | ret = 1; | 374 | ret = 1; |
| 375 | break; | ||
| 367 | } | 376 | } |
| 368 | } else { | 377 | } else { |
| 369 | switch (input_res) { | 378 | switch (input_res) { |
| @@ -375,6 +384,14 @@ int main(int argc, char *argv[]) | |||
| 375 | } | 384 | } |
| 376 | ret = 3; | 385 | ret = 3; |
| 377 | break; | 386 | break; |
| 387 | case PLIST_ERR_CIRCULAR_REF: | ||
| 388 | fprintf(stderr, "ERROR: Circular reference detected in input plist data.\n"); | ||
| 389 | ret = 5; | ||
| 390 | break; | ||
| 391 | case PLIST_ERR_MAX_NESTING: | ||
| 392 | fprintf(stderr, "ERROR: Input plist data exceeds maximum nesting depth.\n"); | ||
| 393 | ret = 4; | ||
| 394 | break; | ||
| 378 | default: | 395 | default: |
| 379 | fprintf(stderr, "ERROR: Could not parse plist data (%d)\n", input_res); | 396 | fprintf(stderr, "ERROR: Could not parse plist data (%d)\n", input_res); |
| 380 | ret = 1; | 397 | ret = 1; |
