diff options
author | Dante Catalfamo | 2021-05-30 16:28:04 -0400 |
---|---|---|
committer | Dante Catalfamo | 2021-05-30 16:28:04 -0400 |
commit | a93761f06eb75fcfaca85582bfb2d1def609ae6d (patch) | |
tree | f1064f5cd2e23a498919573a011de255b197aa26 | |
parent | 814d2642ad4e6b9a29f25499cc436caf1abb0724 (diff) | |
download | blog-a93761f06eb75fcfaca85582bfb2d1def609ae6d.tar.gz blog-a93761f06eb75fcfaca85582bfb2d1def609ae6d.tar.bz2 blog-a93761f06eb75fcfaca85582bfb2d1def609ae6d.zip |
bsd-auth: add more funcs
-rw-r--r-- | content/posts/WIP-how-bsd-authentication-works/index.org | 73 |
1 files changed, 68 insertions, 5 deletions
diff --git a/content/posts/WIP-how-bsd-authentication-works/index.org b/content/posts/WIP-how-bsd-authentication-works/index.org index 70fc635..60d84b8 100644 --- a/content/posts/WIP-how-bsd-authentication-works/index.org +++ b/content/posts/WIP-how-bsd-authentication-works/index.org @@ -52,11 +52,8 @@ :CUSTOM_ID: why :END: - This one is pretty difficult, since there seems to be very little - information about how BSD Auth works apart from the source code - itself and the man pages, which intentionally keep the internals - opaque. This is my best attempt to understand and describe the flow - of BSD Auth. + I was curious about how the internals of BSD Auth worked, and I + figured someone else might be too :-). * Documentation :PROPERTIES: @@ -673,6 +670,72 @@ =BI_UNSETENV= from =as->spool=. This is explained under the =auth_call= section. +** auth_clroption + :PROPERTIES: + :CUSTOM_ID: auth_clroption + :END: + + @@html: <details> <summary> @@ + #+begin_src c + void auth_clroption(auth_session_t *as, char *option) + #+end_src + @@html: </summary> @@ + #+begin_src c + { + struct authopts *opt, *oopt; + size_t len; + + len = strlen(option); + + if ((opt = as->optlist) == NULL) + return; + + if (strncmp(opt->opt, option, len) == 0 && + (opt->opt[len] == '=' || opt->opt[len] == '\0')) { + as->optlist = opt->next; + free(opt); + return; + } + + while ((oopt = opt->next) != NULL) { + if (strncmp(oopt->opt, option, len) == 0 && + (oopt->opt[len] == '=' || oopt->opt[len] == '\0')) { + opt->next = oopt->next; + free(oopt); + return; + } + opt = oopt; + } + } + #+end_src + @@html: </details> @@ + + =auth_clroption= removes the option named =option= from =as=. + +** auth_clroptions + :PROPERTIES: + :CUSTOM_ID: auth_clroptions + :END: + + @@html: <details> <summary> @@ + #+begin_src c + void auth_clroptions(auth_session_t *as) + #+end_src + @@html: </summary> @@ + #+begin_src c + { + struct authopts *opt; + + while ((opt = as->optlist) != NULL) { + as->optlist = opt->next; + free(opt); + } + } + #+end_src + @@html: </details> @@ + + =auth_clroptions= clears all options from =as=. + ** auth_setenv :PROPERTIES: :CUSTOM_ID: auth_setenv |