Branch data Line data Source code
1 : : /*
2 : : *****************************************************************************
3 : : *
4 : : * File: fko_server_auth.c
5 : : *
6 : : * Purpose: Set/Get the spa server auth data.
7 : : *
8 : : * Fwknop is developed primarily by the people listed in the file 'AUTHORS'.
9 : : * Copyright (C) 2009-2014 fwknop developers and contributors. For a full
10 : : * list of contributors, see the file 'CREDITS'.
11 : : *
12 : : * License (GNU General Public License):
13 : : *
14 : : * This program is free software; you can redistribute it and/or
15 : : * modify it under the terms of the GNU General Public License
16 : : * as published by the Free Software Foundation; either version 2
17 : : * of the License, or (at your option) any later version.
18 : : *
19 : : * This program is distributed in the hope that it will be useful,
20 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 : : * GNU General Public License for more details.
23 : : *
24 : : * You should have received a copy of the GNU General Public License
25 : : * along with this program; if not, write to the Free Software
26 : : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
27 : : * USA
28 : : *
29 : : *****************************************************************************
30 : : */
31 : : #include "fko_common.h"
32 : : #include "fko.h"
33 : :
34 : : /* Set the SPA Server Auth data
35 : : */
36 : : int
37 : 110 : fko_set_spa_server_auth(fko_ctx_t ctx, const char * const msg)
38 : : {
39 : : /****************************************
40 : : * --DSS This is not supported yet
41 : : ****************************************
42 : : */
43 : : //return(FKO_ERROR_UNSUPPORTED_FEATURE);
44 : :
45 : : #if HAVE_LIBFIU
46 [ + - ]: 110 : fiu_return_on("fko_set_spa_server_auth_init", FKO_ERROR_CTX_NOT_INITIALIZED);
47 : : #endif
48 : :
49 : : /* Context must be initialized.
50 : : */
51 [ + + ][ + - ]: 110 : if(!CTX_INITIALIZED(ctx))
52 : : return FKO_ERROR_CTX_NOT_INITIALIZED;
53 : :
54 : : /* Gotta have a valid string.
55 : : */
56 [ + + ][ + + ]: 106 : if(msg == NULL || strnlen(msg, MAX_SPA_SERVER_AUTH_SIZE) == 0)
57 : : return(FKO_ERROR_INVALID_DATA_SRVAUTH_MISSING);
58 : :
59 : : /* --DSS XXX: Bail out for now. But consider just
60 : : * truncating in the future...
61 : : */
62 [ + + ]: 92 : if(strnlen(msg, MAX_SPA_SERVER_AUTH_SIZE) == MAX_SPA_SERVER_AUTH_SIZE)
63 : : return(FKO_ERROR_DATA_TOO_LARGE);
64 : :
65 : : /* --DSS TODO: ???
66 : : * Do we want to add message type and format checking here
67 : : * or continue to leave it to the implementor?
68 : : */
69 : :
70 : : /**/
71 : :
72 : : /* Just in case this is a subsquent call to this function. We
73 : : * do not want to be leaking memory.
74 : : */
75 [ + + ]: 91 : if(ctx->server_auth != NULL)
76 : 80 : free(ctx->server_auth);
77 : :
78 : 91 : ctx->server_auth = strdup(msg);
79 : :
80 : 91 : ctx->state |= FKO_DATA_MODIFIED;
81 : :
82 [ + - ]: 91 : if(ctx->server_auth == NULL)
83 : : return(FKO_ERROR_MEMORY_ALLOCATION);
84 : :
85 : 91 : return(FKO_SUCCESS);
86 : : }
87 : :
88 : : /* Return the SPA message data.
89 : : */
90 : : int
91 : 4510 : fko_get_spa_server_auth(fko_ctx_t ctx, char **server_auth)
92 : : {
93 : :
94 : : #if HAVE_LIBFIU
95 [ + + ]: 4510 : fiu_return_on("fko_get_spa_server_auth_init", FKO_ERROR_CTX_NOT_INITIALIZED);
96 : : #endif
97 : :
98 : : /* Must be initialized
99 : : */
100 [ + + ][ + - ]: 4508 : if(!CTX_INITIALIZED(ctx))
101 : : return(FKO_ERROR_CTX_NOT_INITIALIZED);
102 : :
103 [ + + ]: 4356 : if(server_auth == NULL)
104 : : return(FKO_ERROR_INVALID_DATA);
105 : :
106 : : #if HAVE_LIBFIU
107 [ + + ]: 4288 : fiu_return_on("fko_get_spa_server_auth_val", FKO_ERROR_INVALID_DATA);
108 : : #endif
109 : :
110 : 4286 : *server_auth = ctx->server_auth;
111 : :
112 : 4286 : return(FKO_SUCCESS);
113 : : }
114 : :
115 : : /***EOF***/
|