diff options
| -rw-r--r-- | lib/libtinyrad/libtinyrad.h | 2 | ||||
| -rw-r--r-- | lib/libtinyrad/lmemory.c | 27 |
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 | ||
