정규식 버퍼 오버플로우 문제

only2sea의 이미지

정규식에 대해서 공부하다가 생긴 의문입니다. Quoted String을 정규식으로 받아들이는 방법에 대한 내용을 보면

먼저 간단한 방법으로 다음과 같은 것을 생각할 수 있습니다.

\".*\"

그런데 이것은 한 라인에 두개 이상이 있을 때에는 받아들이지 못하는 문제점이 있습니다.

그래서 다음과 같은 방법을 이용할 수 있습니다.

\"[^\"]*\"

그런데 이번에는 버퍼 오버플로우의 문제가 발생할 수 있다고 하네요. 제가 읽은 자료에는 여기까지만 나와 있습니다. "이 문제 해결법은 알아서 생각해 보세요~" 이런 식입니다.

그래서 생각해보니 이것은 따옴표만 열고 닫지 않았을 때 파일의 끝까지 읽을 수가 있겠더라구요. 그래서 다음과 같이 고쳤습니다.

\"[^\"\n]*\"

그런데 여전히 한 라인이 많이 길어지면 버퍼 오버플로우가 발생할 수 있을 것 같은데요... 여기까지인 것일까요.. 아니면 뭔가 이상한 방법이 있는 것일까요?

\"[^\"\n]{0, 1000}\"

그래서 생각해 낸 방법이 위와 같은 방법인데, 이렇게 되면 state가 1000개 이상 되어서 별로 좋지 않을 것 같습니다.

보통 quoted string 처리할 때 어떻게 하시나요?

imyejin의 이미지

파일 읽을 때 파일 크다고 버퍼 오버플로 걱정하지 않듯 길이가 얼마인지 모르는 것은 여러번에 나눠서 읽으세요

[예진아씨 피카사 웹앨범] 임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin