@@ -123,14 +123,12 @@ static ngx_int_t ngx_http_auth_jwt_handler(ngx_http_request_t *r)
123
123
}
124
124
125
125
// the cookie data is not necessarily null terminated... we need a null terminated character pointer
126
- jwtCookieValChrPtr = ngx_alloc (jwtCookieVal .len + 1 , r -> connection -> log );
127
- ngx_memcpy (jwtCookieValChrPtr , jwtCookieVal .data , jwtCookieVal .len );
128
- * (jwtCookieValChrPtr + jwtCookieVal .len ) = '\0' ;
126
+ jwtCookieValChrPtr = ngx_str_t_to_char_ptr (r -> pool , jwtCookieVal );
129
127
130
128
// ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "rampartjwt: %s %d", jwtCookieValChrPtr, jwtCookieVal.len);
131
129
132
130
// convert key from hex to binary
133
- keyBinary = ngx_alloc ( jwtcf -> auth_jwt_key .len / 2 , r -> connection -> log );
131
+ keyBinary = ngx_palloc ( r -> pool , jwtcf -> auth_jwt_key .len / 2 );
134
132
if (0 != hex_to_binary ((char * )jwtcf -> auth_jwt_key .data , keyBinary , jwtcf -> auth_jwt_key .len ))
135
133
{
136
134
ngx_log_error (NGX_LOG_ERR , r -> connection -> log , 0 , "failed to turn hex key into binary" );
@@ -207,10 +205,7 @@ static ngx_int_t ngx_http_auth_jwt_handler(ngx_http_request_t *r)
207
205
uri .len = request_uri_var -> len ;
208
206
ngx_memcpy (uri .data , request_uri_var -> data , request_uri_var -> len );
209
207
210
-
211
- char * tmp = ngx_alloc (uri .len + 1 , r -> connection -> log );
212
- ngx_memcpy (tmp , uri .data , uri .len );
213
- * (tmp + uri .len ) = '\0' ;
208
+ char * tmp = ngx_str_t_to_char_ptr (r -> pool , uri );
214
209
215
210
ngx_log_error (NGX_LOG_ERR , r -> connection -> log , 0 , "found uri with querystring %s" , tmp );
216
211
}
@@ -229,7 +224,7 @@ static ngx_int_t ngx_http_auth_jwt_handler(ngx_http_request_t *r)
229
224
ngx_escape_uri (uri_escaped .data , uri .data , uri .len , NGX_ESCAPE_URI );
230
225
231
226
r -> headers_out .___location -> value .len = loginlen + sizeof ("?return_url=" ) - 1 + strlen (scheme ) + sizeof ("://" ) - 1 + server .len + uri_escaped .len ;
232
- return_url = ngx_alloc (r -> headers_out .___location -> value .len , r -> connection -> log );
227
+ return_url = ngx_palloc (r -> pool , r -> headers_out .___location -> value .len );
233
228
ngx_memcpy (return_url , jwtcf -> auth_jwt_loginurl .data , jwtcf -> auth_jwt_loginurl .len );
234
229
int return_url_idx = jwtcf -> auth_jwt_loginurl .len ;
235
230
ngx_memcpy (return_url + return_url_idx , "?return_url=" , sizeof ("?return_url=" ) - 1 );
@@ -244,7 +239,9 @@ static ngx_int_t ngx_http_auth_jwt_handler(ngx_http_request_t *r)
244
239
return_url_idx += uri_escaped .len ;
245
240
r -> headers_out .___location -> value .data = (u_char * )return_url ;
246
241
247
- ngx_log_error (NGX_LOG_ERR , r -> connection -> log , 0 , "return_url: %s" , return_url );
242
+ char * return_url_printable = ngx_str_t_to_char_ptr (r -> pool , return_url );
243
+
244
+ ngx_log_error (NGX_LOG_ERR , r -> connection -> log , 0 , "return_url: %s" , return_url_printable );
248
245
}
249
246
else
250
247
{
@@ -335,7 +332,8 @@ hex_char_to_binary( char ch, char* ret )
335
332
}
336
333
337
334
static int
338
- hex_to_binary ( const char * str , u_char * buf , int len ) {
335
+ hex_to_binary ( const char * str , u_char * buf , int len )
336
+ {
339
337
u_char
340
338
* cpy = buf ;
341
339
char
@@ -357,3 +355,13 @@ hex_to_binary( const char* str, u_char* buf, int len ) {
357
355
return 0 ;
358
356
}
359
357
358
+ /** copies an nginx string structure to a newly allocated character pointer */
359
+ static char * ngx_str_t_to_char_ptr (ngx_pool_t * pool , ngx_str_t str )
360
+ {
361
+ char * char_ptr = ngx_palloc (pool , str .len + 1 );
362
+ ngx_memcpy (char_ptr , str .data , str .len );
363
+ * (char_ptr + str .len ) = '\0' ;
364
+ return char_ptr ;
365
+ }
366
+
367
+
0 commit comments