diff options
Diffstat (limited to 'lib/graypam.h')
-rw-r--r-- | lib/graypam.h | 50 |
1 files changed, 29 insertions, 21 deletions
diff --git a/lib/graypam.h b/lib/graypam.h index 76dcd68..69c4909 100644 --- a/lib/graypam.h +++ b/lib/graypam.h @@ -86,14 +86,3 @@ extern jmp_buf gray_pam_jmp; -#define gray_pam_init(retval) \ - if (setjmp(gray_pam_jmp)) \ - return retval; \ - -void gray_raise(const char *fmt, ...); - -void *gray_malloc(size_t size); -void *gray_zalloc(size_t size); -void *gray_calloc(size_t count, size_t size); -void *gray_realloc(void *ptr, size_t size); void *gray_2nrealloc(void *ptr, size_t *pcount, size_t elsiz); -char *gray_strdup(const char *str); @@ -104,3 +93,2 @@ void gray_make_str(pam_handle_t *pamh, const char *str, const char *name, char **ret); - @@ -108,14 +96,16 @@ typedef struct gray_slist *gray_slist_t; -gray_slist_t gray_slist_create(); +gray_slist_t gray_slist_create(void); +int gray_slist_err(gray_slist_t slist); +void gray_slist_clrerr(gray_slist_t slist); void gray_slist_clear(gray_slist_t slist); void gray_slist_free(gray_slist_t *slist); -void gray_slist_append(gray_slist_t slist, const char *str, size_t n); -void gray_slist_append_char(gray_slist_t slist, char c); +ssize_t gray_slist_append(gray_slist_t slist, const char *str, size_t n); +ssize_t gray_slist_append_char(gray_slist_t slist, char c); size_t gray_slist_size(gray_slist_t slist); -size_t gray_slist_coalesce(gray_slist_t slist); +ssize_t gray_slist_coalesce(gray_slist_t slist); void *gray_slist_head(gray_slist_t slist, size_t *psize); void *gray_slist_finish(gray_slist_t slist); -void gray_slist_grow_backslash_num(gray_slist_t slist, char *text, char **pend, - int len, int base); -void gray_slist_grow_backslash(gray_slist_t slist, char *text, char **endp); +int gray_slist_grow_backslash_num(gray_slist_t slist, char *text, char **pend, + int len, int base); +int gray_slist_grow_backslash(gray_slist_t slist, char *text, char **endp); @@ -131,6 +121,24 @@ void gray_wait_debug(size_t interval, const char *file, size_t line); #define _pam_debug gray_pam_debug - + +static inline int +errno_to_pam(int ec) +{ + switch (ec) { + case EILSEQ: + _pam_log(LOG_ERR, "malformed password hash"); + return PAM_SERVICE_ERR; + + case ENOMEM: + _pam_log(LOG_ERR, "%s", strerror(errno)); + return PAM_BUF_ERR; + + default: + break; + } + _pam_log(LOG_ERR, "%s", strerror(errno)); + return PAM_SERVICE_ERR; +} int gray_transform_name_to_slist (gray_slist_t slist, char *input, char **output); -void gray_set_transform_expr (const char *expr); +int gray_set_transform_expr (const char *expr); void gray_free_transform_expr (void); |