Headers with null character are now rejected.
Headers with NUL character aren't allowed by HTTP standard and may cause
various security problems. They are now unconditionally rejected.
Maxim Dounin
10 years ago
873 | 873 | break; |
874 | 874 | } |
875 | 875 | |
876 | if (ch == '\0') { | |
877 | return NGX_HTTP_PARSE_INVALID_HEADER; | |
878 | } | |
879 | ||
876 | 880 | r->invalid_header = 1; |
877 | 881 | |
878 | 882 | break; |
935 | 939 | break; |
936 | 940 | } |
937 | 941 | |
942 | if (ch == '\0') { | |
943 | return NGX_HTTP_PARSE_INVALID_HEADER; | |
944 | } | |
945 | ||
938 | 946 | r->invalid_header = 1; |
939 | 947 | |
940 | 948 | break; |
953 | 961 | r->header_start = p; |
954 | 962 | r->header_end = p; |
955 | 963 | goto done; |
964 | case '\0': | |
965 | return NGX_HTTP_PARSE_INVALID_HEADER; | |
956 | 966 | default: |
957 | 967 | r->header_start = p; |
958 | 968 | state = sw_value; |
974 | 984 | case LF: |
975 | 985 | r->header_end = p; |
976 | 986 | goto done; |
987 | case '\0': | |
988 | return NGX_HTTP_PARSE_INVALID_HEADER; | |
977 | 989 | } |
978 | 990 | break; |
979 | 991 | |
987 | 999 | break; |
988 | 1000 | case LF: |
989 | 1001 | goto done; |
1002 | case '\0': | |
1003 | return NGX_HTTP_PARSE_INVALID_HEADER; | |
990 | 1004 | default: |
991 | 1005 | state = sw_value; |
992 | 1006 | break; |