diff options
Diffstat (limited to 'nslcd/common.h')
-rw-r--r-- | nslcd/common.h | 19 |
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; \ } |