pjsip: Increase maximum number of usable ciphers & other cleanups

* Increase maximum number of ciphers from 100 to 256 (or whatever
  PJ_SSL_SOCK_MAX_CIPHERS is #define'd to)

* Simplify logic in cipher_name_to_id()

* Make signed/unsigned comparison consistent

Re: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=897412

Reported by: Ondřej Holas

Change-Id: Iea620f03915a1b873e79743154255c3148a514e7
This commit is contained in:
Sean Bright 2018-05-02 08:43:35 -04:00
parent f633af89c1
commit 239074c759
1 changed files with 8 additions and 13 deletions

View File

@ -977,27 +977,22 @@ static int tls_method_to_str(const void *obj, const intptr_t *args, char **buf)
/*! \brief Helper function which turns a cipher name into an identifier */ /*! \brief Helper function which turns a cipher name into an identifier */
static pj_ssl_cipher cipher_name_to_id(const char *name) static pj_ssl_cipher cipher_name_to_id(const char *name)
{ {
pj_ssl_cipher ciphers[100]; pj_ssl_cipher ciphers[PJ_SSL_SOCK_MAX_CIPHERS];
pj_ssl_cipher id = 0;
unsigned int cipher_num = PJ_ARRAY_SIZE(ciphers); unsigned int cipher_num = PJ_ARRAY_SIZE(ciphers);
int pos; unsigned int pos;
const char *pos_name;
if (pj_ssl_cipher_get_availables(ciphers, &cipher_num)) { if (pj_ssl_cipher_get_availables(ciphers, &cipher_num)) {
return 0; return 0;
} }
for (pos = 0; pos < cipher_num; ++pos) { for (pos = 0; pos < cipher_num; ++pos) {
pos_name = pj_ssl_cipher_name(ciphers[pos]); const char *pos_name = pj_ssl_cipher_name(ciphers[pos]);
if (!pos_name || strcmp(pos_name, name)) { if (pos_name && !strcmp(pos_name, name)) {
continue; return ciphers[pos];
} }
id = ciphers[pos];
break;
} }
return id; return 0;
} }
/*! /*!
@ -1072,7 +1067,7 @@ static int transport_tls_cipher_handler(const struct aco_option *opt, struct ast
static void cipher_to_str(char **buf, const pj_ssl_cipher *ciphers, unsigned int cipher_num) static void cipher_to_str(char **buf, const pj_ssl_cipher *ciphers, unsigned int cipher_num)
{ {
struct ast_str *str; struct ast_str *str;
int idx; unsigned int idx;
str = ast_str_create(128); str = ast_str_create(128);
if (!str) { if (!str) {
@ -1106,7 +1101,7 @@ static int transport_tls_cipher_to_str(const void *obj, const intptr_t *args, ch
static char *handle_pjsip_list_ciphers(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a) static char *handle_pjsip_list_ciphers(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{ {
pj_ssl_cipher ciphers[100]; pj_ssl_cipher ciphers[PJ_SSL_SOCK_MAX_CIPHERS];
unsigned int cipher_num = PJ_ARRAY_SIZE(ciphers); unsigned int cipher_num = PJ_ARRAY_SIZE(ciphers);
char *buf; char *buf;