projects
/
oweals
/
openssl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
NISTZ256: owur'ize.
[oweals/openssl.git]
/
apps
/
s_server.c
diff --git
a/apps/s_server.c
b/apps/s_server.c
index 88309a6b9c78d324594ec56a31d40e2b14deafee..e12db0c86615d7bb901c9f334cc1ee68c7a16843 100644
(file)
--- a/
apps/s_server.c
+++ b/
apps/s_server.c
@@
-228,6
+228,8
@@
static int s_server_verify = SSL_VERIFY_NONE;
static int s_server_session_id_context = 1; /* anything will do */
static const char *s_cert_file = TEST_CERT, *s_key_file =
NULL, *s_chain_file = NULL;
static int s_server_session_id_context = 1; /* anything will do */
static const char *s_cert_file = TEST_CERT, *s_key_file =
NULL, *s_chain_file = NULL;
+static const char *krb5svc = NULL;
+static const char *krb5tab = NULL;
#ifndef OPENSSL_NO_TLSEXT
static const char *s_cert_file2 = TEST_CERT2, *s_key_file2 = NULL;
#endif
#ifndef OPENSSL_NO_TLSEXT
static const char *s_cert_file2 = TEST_CERT2, *s_key_file2 = NULL;
#endif
@@
-839,7
+841,8
@@
typedef enum OPTION_choice {
OPT_SRTP_PROFILES, OPT_KEYMATEXPORT, OPT_KEYMATEXPORTLEN,
OPT_S_ENUM,
OPT_V_ENUM,
OPT_SRTP_PROFILES, OPT_KEYMATEXPORT, OPT_KEYMATEXPORTLEN,
OPT_S_ENUM,
OPT_V_ENUM,
- OPT_X_ENUM
+ OPT_X_ENUM,
+ OPT_KRB5SVC, OPT_KRBTAB
} OPTION_CHOICE;
OPTIONS s_server_options[] = {
} OPTION_CHOICE;
OPTIONS s_server_options[] = {
@@
-897,6
+900,8
@@
OPTIONS s_server_options[] = {
{"jpake", OPT_JPAKE, 's', "JPAKE secret to use"},
# endif
#endif
{"jpake", OPT_JPAKE, 's', "JPAKE secret to use"},
# endif
#endif
+ {"krb5svc", OPT_KRB5SVC, 's', "Kerberos service name"},
+ {"keytab", OPT_KRBTAB, '<', "Kerberos keytab file"},
#ifndef OPENSSL_NO_SRP
{"srpvfile", OPT_SRPVFILE, '<', "The verifier file for SRP"},
{"srpuserseed", OPT_SRPUSERSEED, 's',
#ifndef OPENSSL_NO_SRP
{"srpvfile", OPT_SRPVFILE, '<', "The verifier file for SRP"},
{"srpuserseed", OPT_SRPUSERSEED, 's',
@@
-1413,6
+1418,12
@@
int s_server_main(int argc, char *argv[])
case OPT_JPAKE:
goto opthelp;
#endif
case OPT_JPAKE:
goto opthelp;
#endif
+ case OPT_KRB5SVC:
+ krb5svc = opt_arg();
+ break;
+ case OPT_KRBTAB:
+ krb5tab = opt_arg();
+ break;
case OPT_SRTP_PROFILES:
srtp_profiles = opt_arg();
break;
case OPT_SRTP_PROFILES:
srtp_profiles = opt_arg();
break;
@@
-3169,6
+3180,7
@@
static int add_session(SSL *ssl, SSL_SESSION *session)
sess->derlen = i2d_SSL_SESSION(session, NULL);
if (sess->derlen < 0) {
BIO_printf(bio_err, "Error encoding session\n");
sess->derlen = i2d_SSL_SESSION(session, NULL);
if (sess->derlen < 0) {
BIO_printf(bio_err, "Error encoding session\n");
+ OPENSSL_free(sess);
return 0;
}
return 0;
}
@@
-3176,10
+3188,8
@@
static int add_session(SSL *ssl, SSL_SESSION *session)
sess->der = OPENSSL_malloc(sess->derlen);
if (!sess->id || !sess->der) {
BIO_printf(bio_err, "Out of memory adding to external cache\n");
sess->der = OPENSSL_malloc(sess->derlen);
if (!sess->id || !sess->der) {
BIO_printf(bio_err, "Out of memory adding to external cache\n");
- if (sess->id)
- OPENSSL_free(sess->id);
- if (sess->der)
- OPENSSL_free(sess->der);
+ OPENSSL_free(sess->id);
+ OPENSSL_free(sess->der);
OPENSSL_free(sess);
return 0;
}
OPENSSL_free(sess);
return 0;
}
@@
-3187,7
+3197,10
@@
static int add_session(SSL *ssl, SSL_SESSION *session)
/* Assume it still works. */
if (i2d_SSL_SESSION(session, &p) != sess->derlen) {
/* Assume it still works. */
if (i2d_SSL_SESSION(session, &p) != sess->derlen) {
- BIO_printf(bio_err, "Error encoding session\n");
+ BIO_printf(bio_err, "Unexpected session encoding length\n");
+ OPENSSL_free(sess->id);
+ OPENSSL_free(sess->der);
+ OPENSSL_free(sess);
return 0;
}
return 0;
}