summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plug-nis.c22
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;
}