diff options
Diffstat (limited to 'src/sss_client/sudo_plugin/sss_sudoplugin.c')
-rw-r--r-- | src/sss_client/sudo_plugin/sss_sudoplugin.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/sss_client/sudo_plugin/sss_sudoplugin.c b/src/sss_client/sudo_plugin/sss_sudoplugin.c index 9e2dfce0..3e5e2c08 100644 --- a/src/sss_client/sudo_plugin/sss_sudoplugin.c +++ b/src/sss_client/sudo_plugin/sss_sudoplugin.c @@ -347,15 +347,19 @@ errno_t policy_check_parse_response(char *response, { #define LOAD_ARRAY(element) do { \ i = 0; \ - while (*current_position != '\0') { \ - i++; \ - element = (char**)realloc(element, i * sizeof(char*)); \ - element[i - 1] = current_position; \ - current_position = strchr(current_position, '\0'); \ - if (current_position == NULL) { \ - ret = ESPIPE; \ - goto done; \ + if (*current_position != '\0') { \ + while (*current_position != '\0') { \ + i++; \ + element = (char**)realloc(element, i * sizeof(char*)); \ + element[i - 1] = current_position; \ + current_position = strchr(current_position, '\0'); \ + if (current_position == NULL) { \ + ret = ESPIPE; \ + goto done; \ + } \ + current_position++; \ } \ + } else { \ current_position++; \ } \ i++; \ |