summaryrefslogtreecommitdiff
path: root/nslcd/common.h
diff options
context:
space:
mode:
Diffstat (limited to 'nslcd/common.h')
-rw-r--r--nslcd/common.h19
1 files changed, 11 insertions, 8 deletions
diff --git a/nslcd/common.h b/nslcd/common.h
index ce87b09..1893698 100644
--- a/nslcd/common.h
+++ b/nslcd/common.h
@@ -256,20 +256,20 @@ int nslcd_pam_pwmod(TFILE *fp, MYLDAP_SESSION *session, uid_t calleruid);
int nslcd_usermod(TFILE *fp, MYLDAP_SESSION *session, uid_t calleruid);
/* macros for generating service handling code */
-#define NSLCD_HANDLE(db, fn, action, fndecls, fnread, fncheck, fnsearch, fnwrite) \
+#define NSLCD_HANDLE(db, fn, action, fndecls, fnread, fncheck, tentry, fnsearch, fnwrite, fnclean) \
int nslcd_##db##_##fn(TFILE *fp, MYLDAP_SESSION *session) \
- NSLCD_HANDLE_BODY(db, fn, action, fndecls, fnread, fncheck, fnsearch, fnwrite)
-#define NSLCD_HANDLE_UID(db, fn, action, fndecls, fnread, fncheck, fnsearch, fnwrite) \
+ NSLCD_HANDLE_BODY(db, fn, action, fndecls, fnread, fncheck, tentry, fnsearch, fnwrite, fnclean)
+#define NSLCD_HANDLE_UID(db, fn, action, fndecls, fnread, fncheck, tentry, fnsearch, fnwrite, fnclean) \
int nslcd_##db##_##fn(TFILE *fp, MYLDAP_SESSION *session, uid_t calleruid) \
- NSLCD_HANDLE_BODY(db, fn, action, fndecls, fnread, fncheck, fnsearch, fnwrite)
-#define NSLCD_HANDLE_BODY(db, fn, action, fndecls, fnread, fncheck, fnsearch, fnwrite) \
+ NSLCD_HANDLE_BODY(db, fn, action, fndecls, fnread, fncheck, tentry, fnsearch, fnwrite, fnclean)
+#define NSLCD_HANDLE_BODY(db, fn, action, fndecls, fnread, fncheck, tentry, fnsearch, fnwrite, fnclean) \
{ \
/* define common variables */ \
int32_t tmpint32; \
- void *entry = NULL; \
+ tentry *entry = NULL; \
int rc = 1; \
fndecls \
- MYLDAP_ENTRY *search(int *rcp) { fnsearch } \
+ tentry *search(int *rcp) { fnsearch } \
/* read request parameters */ \
fnread \
/* validate request parameters */ \
@@ -280,14 +280,17 @@ int nslcd_usermod(TFILE *fp, MYLDAP_SESSION *session, uid_t calleruid);
/* go over results */ \
while ((entry = search(&rc)) != NULL) \
{ \
- if ( ({ fnwrite }) ) \
+ if ( ({ fnwrite }) ) { \
+ fnclean \
return -1; \
+ } \
} \
/* write the final result code */ \
if (rc == 0) \
{ \
WRITE_INT32(fp, NSLCD_RESULT_END); \
} \
+ fnclean \
return 0; \
}