aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--lib/libtinyrad/libtinyrad.h2
-rw-r--r--lib/libtinyrad/lmemory.c27
2 files changed, 24 insertions, 5 deletions
diff --git a/lib/libtinyrad/libtinyrad.h b/lib/libtinyrad/libtinyrad.h
index 846f787..58bd7d5 100644
--- a/lib/libtinyrad/libtinyrad.h
+++ b/lib/libtinyrad/libtinyrad.h
@@ -117,6 +117,8 @@ struct _tinyrad
117 TinyRadURLDesc * trud; 117 TinyRadURLDesc * trud;
118 TinyRadURLDesc * trud_cur; 118 TinyRadURLDesc * trud_cur;
119 char * secret; 119 char * secret;
120 char * secret_file;
121 void * padptr;
120 size_t trud_pos; 122 size_t trud_pos;
121 struct sockaddr_in * bind_sa; 123 struct sockaddr_in * bind_sa;
122 struct sockaddr_in6 * bind_sa6; 124 struct sockaddr_in6 * bind_sa6;
diff --git a/lib/libtinyrad/lmemory.c b/lib/libtinyrad/lmemory.c
index 44def01..46cfd80 100644
--- a/lib/libtinyrad/lmemory.c
+++ b/lib/libtinyrad/lmemory.c
@@ -403,6 +403,9 @@ tinyrad_tiyrad_free(
403 if ((tr->secret)) 403 if ((tr->secret))
404 free(tr->secret); 404 free(tr->secret);
405 405
406 if ((tr->secret_file))
407 free(tr->secret_file);
408
406 if ((tr->trud)) 409 if ((tr->trud))
407 tinyrad_urldesc_free(tr->trud); 410 tinyrad_urldesc_free(tr->trud);
408 tr->trud = NULL; 411 tr->trud = NULL;
@@ -533,14 +536,21 @@ tinyrad_get_option(
533 536
534 case TRAD_OPT_SECRET: 537 case TRAD_OPT_SECRET:
535 TinyRadDebug(TRAD_DEBUG_ARGS, " == %s( tr, TRAD_OPT_SECRET, outvalue )", __func__); 538 TinyRadDebug(TRAD_DEBUG_ARGS, " == %s( tr, TRAD_OPT_SECRET, outvalue )", __func__);
536 TinyRadDebug(TRAD_DEBUG_ARGS, " <= outvalue: %s", tr->secret); 539 TinyRadDebug(TRAD_DEBUG_ARGS, " <= outvalue: %s", ((tr->secret)) ? tr->secret : "(null)");
537 if (((*(char **)outvalue) = tinyrad_strdup(tr->secret)) == NULL) 540 *((char **)outvalue) = NULL;
538 return(TRAD_ENOMEM); 541 if ((tr->secret))
542 if (((*(char **)outvalue) = tinyrad_strdup(tr->secret)) == NULL)
543 return(TRAD_ENOMEM);
539 break; 544 break;
540 545
541 case TRAD_OPT_SECRET_FILE: 546 case TRAD_OPT_SECRET_FILE:
542 TinyRadDebug(TRAD_DEBUG_ARGS, " == %s( tr, TRAD_OPT_SECRET_FILE, outvalue )", __func__); 547 TinyRadDebug(TRAD_DEBUG_ARGS, " == %s( tr, TRAD_OPT_SECRET_FILE, outvalue )", __func__);
543 return(TRAD_EOPTERR); 548 TinyRadDebug(TRAD_DEBUG_ARGS, " <= outvalue: %s", ((tr->secret_file)) ? tr->secret_file : "(null)");
549 *((char **)outvalue) = NULL;
550 if ((tr->secret_file))
551 if (((*(char **)outvalue) = tinyrad_strdup(tr->secret_file)) == NULL)
552 return(TRAD_ENOMEM);
553 break;
544 554
545 case TRAD_OPT_SOCKET_BIND_ADDRESSES: 555 case TRAD_OPT_SOCKET_BIND_ADDRESSES:
546 TinyRadDebug(TRAD_DEBUG_ARGS, " == %s( tr, TRAD_OPT_SOCKET_BIND_ADDRESSES, outvalue )", __func__); 556 TinyRadDebug(TRAD_DEBUG_ARGS, " == %s( tr, TRAD_OPT_SOCKET_BIND_ADDRESSES, outvalue )", __func__);
@@ -778,6 +788,9 @@ tinyrad_set_option(
778 788
779 case TRAD_OPT_SECRET: 789 case TRAD_OPT_SECRET:
780 TinyRadDebug(TRAD_DEBUG_ARGS, " == %s( tr, TRAD_OPT_SECRET, \"%s\" )", __func__, (const char *)invalue); 790 TinyRadDebug(TRAD_DEBUG_ARGS, " == %s( tr, TRAD_OPT_SECRET, \"%s\" )", __func__, (const char *)invalue);
791 if ((tr->secret_file))
792 free(tr->secret_file);
793 tr->secret_file = NULL;
781 if ((tr->secret)) 794 if ((tr->secret))
782 free(tr->secret); 795 free(tr->secret);
783 if ((tr->secret = tinyrad_strdup(invalue)) == NULL) 796 if ((tr->secret = tinyrad_strdup(invalue)) == NULL)
@@ -790,7 +803,11 @@ tinyrad_set_option(
790 return(rc); 803 return(rc);
791 if ((tr->secret)) 804 if ((tr->secret))
792 free(tr->secret); 805 free(tr->secret);
793 if ((tr->secret = tinyrad_strdup(buff)) == NULL) 806 if ((tr->secret_file))
807 free(tr->secret_file);
808 tr->secret = tinyrad_strdup(buff);
809 tr->secret_file = tinyrad_strdup((const char *)invalue);
810 if ( (!(tr->secret)) || (!(tr->secret_file)) )
794 return(TRAD_ENOMEM); 811 return(TRAD_ENOMEM);
795 break; 812 break;
796 813