diff options
| author | Nalin Dahyabhai <nalin.dahyabhai@pobox.com> | 2008-11-03 19:26:06 -0500 |
|---|---|---|
| committer | Nalin Dahyabhai <nalin.dahyabhai@pobox.com> | 2008-11-03 19:26:06 -0500 |
| commit | a0e830deebd25457c53de135e770fb49bf00e384 (patch) | |
| tree | 991b628e16959598dd242455d2818da2da302aff /src | |
| parent | ce453beffb395046773f91f9c161dc4c0069863f (diff) | |
| download | slapi-nis-a0e830deebd25457c53de135e770fb49bf00e384.tar.gz slapi-nis-a0e830deebd25457c53de135e770fb49bf00e384.tar.xz slapi-nis-a0e830deebd25457c53de135e770fb49bf00e384.zip | |
- add some argument checking to functions which were missing them
- return an error if %collect doesn't have anything to return
Diffstat (limited to 'src')
| -rw-r--r-- | src/format.c | 56 |
1 files changed, 55 insertions, 1 deletions
diff --git a/src/format.c b/src/format.c index c09fef5..c738ff9 100644 --- a/src/format.c +++ b/src/format.c @@ -798,9 +798,15 @@ format_first(struct plugin_state *state, Slapi_PBlock *pb, Slapi_Entry *e, const char *value_format, *default_value; unsigned int *lengths; ret = format_parse_args(state, args, &argc, &argv); + if (ret != 0) { + slapi_log_error(SLAPI_LOG_PLUGIN, state->plugin_desc->spd_id, + "first: error parsing arguments\n"); + return -EINVAL; + } if (argc < 1) { slapi_log_error(SLAPI_LOG_PLUGIN, state->plugin_desc->spd_id, "first: error parsing arguments\n"); + format_free_parsed_args(argv); return -EINVAL; } if (argc < 2) { @@ -2151,9 +2157,15 @@ format_ifeq(struct plugin_state *state, Slapi_PBlock *pb, Slapi_Entry *e, Slapi_Value *value; ret = format_parse_args(state, args, &argc, &argv); + if (ret != 0) { + slapi_log_error(SLAPI_LOG_PLUGIN, state->plugin_desc->spd_id, + "ifeq: error parsing arguments\n"); + return -EINVAL; + } if (argc < 1) { slapi_log_error(SLAPI_LOG_PLUGIN, state->plugin_desc->spd_id, "ifeq: error parsing arguments\n"); + format_free_parsed_args(argv); return -EINVAL; } if (argc != 4) { @@ -2231,9 +2243,15 @@ format_collect(struct plugin_state *state, Slapi_PBlock *pb, Slapi_Entry *e, Slapi_Value *value; ret = format_parse_args(state, args, &argc, &argv); + if (ret != 0) { + slapi_log_error(SLAPI_LOG_PLUGIN, state->plugin_desc->spd_id, + "collect: error parsing arguments\n"); + return -EINVAL; + } if (argc < 1) { slapi_log_error(SLAPI_LOG_PLUGIN, state->plugin_desc->spd_id, "collect: error parsing arguments\n"); + format_free_parsed_args(argv); return -EINVAL; } @@ -2249,23 +2267,59 @@ format_collect(struct plugin_state *state, Slapi_PBlock *pb, Slapi_Entry *e, if (values != NULL) { /* Walk the list of values. */ for (j = 0; values[j] != NULL; j++) { + /* Check for a non-empty value. */ + if (lengths[j] == 0) { + continue; + } /* Add it to the list. */ bv.bv_val = values[j]; bv.bv_len = lengths[j]; + slapi_log_error(SLAPI_LOG_PLUGIN, + state->plugin_desc->spd_id, + "collect: \"%.*s\"\n", + bv.bv_len, bv.bv_val); format_add_bv_list(&choices, &bv); } + slapi_log_error(SLAPI_LOG_PLUGIN, + state->plugin_desc->spd_id, + "collect: expanded \"%s\" to produce " + "%d values for \"%s\"\n", argv[i], j, + slapi_entry_get_dn(e)); format_free_data_set(values, lengths); + } else { + slapi_log_error(SLAPI_LOG_PLUGIN, + state->plugin_desc->spd_id, + "collect: expanding \"%s\" produced " + "no values for \"%s\"\n", argv[i], + slapi_entry_get_dn(e)); } } if (choices != NULL) { + for (i = 0; choices[i] != NULL; i++) { + slapi_log_error(SLAPI_LOG_PLUGIN, + state->plugin_desc->spd_id, + "collect: returning \"%.*s\" for " + "\"%s\"\n", + choices[i]->bv_len, + choices[i]->bv_val, + slapi_entry_get_dn(e)); + continue; + } + slapi_log_error(SLAPI_LOG_PLUGIN, + state->plugin_desc->spd_id, + "collect: returning %d values for \"%s\"\n", i, + slapi_entry_get_dn(e)); format_add_choice(outbuf_choices, outbuf, choices); format_free_bv_list(choices); + ret = 0; + } else { + ret = -ENOENT; } format_free_parsed_args(argv); - return 0; + return ret; } /* Choose a formatting function by name. */ |
