diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/plug-nis.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/src/plug-nis.c b/src/plug-nis.c index e6edf4a..f008a06 100644 --- a/src/plug-nis.c +++ b/src/plug-nis.c @@ -419,17 +419,19 @@ plugin_state_init(Slapi_PBlock *pb, struct plugin_state **lstate) *lstate = state; return 0; failed: - for (i = 0; i < state->n_listeners; i++) { - close(state->listener[i].fd); - state->listener[i].fd = -1; - } - if (state->pmap_client_socket != -1) { - close(state->pmap_client_socket); - state->pmap_client_socket = -1; + if (state != NULL) { + err = errno; + for (i = 0; i < state->n_listeners; i++) { + close(state->listener[i].fd); + state->listener[i].fd = -1; + } + if (state->pmap_client_socket != -1) { + close(state->pmap_client_socket); + state->pmap_client_socket = -1; + } + free(state); + errno = err; } - err = errno; - free(state); - errno = err; return -1; } |