https://origsvn.digium.com/svn/asterisk/branches/1.8
........
r316917 | seanbright | 2011-05-04 22:23:28 -0400 (Wed, 04 May 2011) | 5 lines
Make sure that tcptls_session is properly initialized.
(issue #18598)
Reported by: ksn
........
r316918 | seanbright | 2011-05-04 22:25:20 -0400 (Wed, 04 May 2011) | 5 lines
Look at the correct buffer for our digest info instead of an empty one.
(issue #18598)
Reported by: ksn
........
r316919 | seanbright | 2011-05-04 22:30:45 -0400 (Wed, 04 May 2011) | 10 lines
Use the correct HTTP method when generating our digest, otherwise we always fail.
When calculating the 'A2' portion of our digest for verification, we need the
HTTP method that is currently in use. Unfortunately our mapping function was
incorrect, resulting in invalid hashes being generated and, in turn, failures
in authentication.
(closes issue #18598)
Reported by: ksn
........
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@316920
65c4cc65-6c06-0410-ace0-
fbb531ad65f3
static const struct ast_cfhttp_methods_text {
enum ast_http_method method;
- const char text[];
+ const char *text;
} ast_http_methods_text[] = {
{ AST_HTTP_UNKNOWN, "UNKNOWN" },
{ AST_HTTP_GET, "GET" },
const char *ast_get_http_method(enum ast_http_method method)
{
- return ast_http_methods_text[method].text;
+ int x;
+
+ for (x = 0; x < ARRAY_LEN(ast_http_methods_text); x++) {
+ if (ast_http_methods_text[x].method == method) {
+ return ast_http_methods_text[x].text;
+ }
+ }
+
+ return NULL;
}
const char *ast_http_ftype2mtype(const char *ftype)
struct ast_variable *headers)
{
struct mansession_session *session = NULL;
- struct mansession s = { NULL, };
+ struct mansession s = { .session = NULL, .tcptls_session = ser };
struct ast_variable *v, *params = get_params;
char template[] = "/tmp/ast-http-XXXXXX"; /* template for temporary file */
struct ast_str *http_header = NULL, *out = NULL;
*/
int ast_parse_digest(const char *digest, struct ast_http_digest *d, int request, int pedantic) {
int i;
- char *c, key[512], val[512], tmp[512];
+ char *c, key[512], val[512];
struct ast_str *str = ast_str_create(16);
if (ast_strlen_zero(digest) || !d || !str) {
c = ast_skip_blanks(ast_str_buffer(str));
- if (strncasecmp(tmp, "Digest ", strlen("Digest "))) {
+ if (strncasecmp(c, "Digest ", strlen("Digest "))) {
ast_log(LOG_WARNING, "Missing Digest.\n");
ast_free(str);
return -1;