~ubuntu-branches/debian/squeeze/nginx/squeeze

« back to all changes in this revision

Viewing changes to src/http/ngx_http_parse.c

  • Committer: Bazaar Package Importer
  • Author(s): Kartik Mistry
  • Date: 2010-06-16 01:26:51 UTC
  • mfrom: (1.1.16 upstream)
  • Revision ID: james.westby@ubuntu.com-20100616012651-0kldmspg3i91mynk
Tags: 0.7.67-1
New upstream release

Show diffs side-by-side

added added

removed removed

Lines of Context:
438
438
                r->plus_in_uri = 1;
439
439
                break;
440
440
            case '\0':
441
 
                r->zero_in_uri = 1;
442
 
                break;
 
441
                return NGX_HTTP_PARSE_INVALID_REQUEST;
443
442
            default:
444
443
                state = sw_check_uri;
445
444
                break;
496
495
                r->plus_in_uri = 1;
497
496
                break;
498
497
            case '\0':
499
 
                r->zero_in_uri = 1;
500
 
                break;
 
498
                return NGX_HTTP_PARSE_INVALID_REQUEST;
501
499
            }
502
500
            break;
503
501
 
526
524
                r->complex_uri = 1;
527
525
                break;
528
526
            case '\0':
529
 
                r->zero_in_uri = 1;
530
 
                break;
 
527
                return NGX_HTTP_PARSE_INVALID_REQUEST;
531
528
            }
532
529
            break;
533
530
 
1202
1199
                    ch = *p++;
1203
1200
 
1204
1201
                } else if (ch == '\0') {
1205
 
                    r->zero_in_uri = 1;
 
1202
                    return NGX_HTTP_PARSE_INVALID_REQUEST;
1206
1203
                }
1207
1204
 
1208
1205
                state = quoted_state;
1304
1301
        }
1305
1302
 
1306
1303
        if (ch == '\0') {
1307
 
            *flags |= NGX_HTTP_ZERO_IN_URI;
1308
 
            continue;
 
1304
            goto unsafe;
1309
1305
        }
1310
1306
 
1311
1307
        if (ngx_path_separator(ch) && len > 2) {
1449
1445
void
1450
1446
ngx_http_split_args(ngx_http_request_t *r, ngx_str_t *uri, ngx_str_t *args)
1451
1447
{
1452
 
    u_char  ch, *p, *last;
1453
 
 
1454
 
    p = uri->data;
1455
 
 
1456
 
    last = p + uri->len;
1457
 
 
1458
 
    args->len = 0;
1459
 
 
1460
 
    while (p < last) {
1461
 
 
1462
 
        ch = *p++;
1463
 
 
1464
 
        if (ch == '?') {
1465
 
            args->len = last - p;
1466
 
            args->data = p;
1467
 
 
1468
 
            uri->len = p - 1 - uri->data;
1469
 
 
1470
 
            if (ngx_strlchr(p, last, '\0') != NULL) {
1471
 
                r->zero_in_uri = 1;
1472
 
            }
1473
 
 
1474
 
            return;
1475
 
        }
1476
 
 
1477
 
        if (ch == '\0') {
1478
 
            r->zero_in_uri = 1;
1479
 
            continue;
1480
 
        }
 
1448
    u_char  *p, *last;
 
1449
 
 
1450
    last = uri->data + uri->len;
 
1451
 
 
1452
    p = ngx_strlchr(uri->data, last, '?');
 
1453
 
 
1454
    if (p) {
 
1455
        uri->len = p - uri->data;
 
1456
        p++;
 
1457
        args->len = last - p;
 
1458
        args->data = p;
 
1459
 
 
1460
    } else {
 
1461
        args->len = 0;
1481
1462
    }
1482
1463
}