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