summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/bplist.c2
-rw-r--r--tools/plistutil.c17
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;