저는 C에서 매우 기본적인 서버를 구현하려고합니다. 그 중 하나는 HTTP 헤더를 구성하는 부분입니다. 이렇게하기 위해 header_builder라는 클래스를 작성했습니다.이 클래스는 기본적으로 헤더를 구성합니다. 이 클래스의 가장 기본적인 방법 중 하나는 append_header_line, 다음과 같습니다strcat()가 종료되지 않습니다
void append_header_line(const char *line, char *hdr) {
printf("Adding header line\n");
strcat(hdr, line);
printf("Line added. Adding ending.\n");
strcat(hdr, "\r\n");
printf("Success\n");
}
가 \ "는"HDR "매개 변수의 마지막 상"라인 "매개 변수를 압정으로되어 수행 한 후 추가 해야하는 모든 R \ n "끝까지. 문제는 첫 번째 strcat 호출이 종료되지 않는다는 것입니다. 이 코드를 실행하면이하는 모든 말입니다 : 다음 줄이 실행되지 않음을 의미 헤더 행
추가
, 그리고 그 이유를 알아낼 수 없습니다. 이견있는 사람?
너무 부르는 코드를 표시 할 수 있습니까? 또한,'strcat'이 크래시가 아닌 종료되지 않는 것이 확실합니까? – simonc
"strcat"에 의존하는 서버를 생각할 때 Shadders *는 추가 된 바이트 수의 대상 버퍼에 – TJD
* 여유 공간이 있는지 확인하십시오. https://buildsecurityin.us-cert.gov/bsi-rules/home/g1/844-BSI.html –