"Carlos G는 문제가 있는 C++ 코드를 접하고 그 역사를 조사했습니다.
원본 코드는 "YYMM" 형식을 가정하여 만료 날짜를 파싱했습니다.
년도와 월을 추출하기 위해 "%2d%2d" 형식 문자열을 사용하여 sscanf를 사용했습니다.
그러나 실제 입력 형식은 "MMYY"로 확인되었습니다.
결함 있는 수정은 파싱 전에 입력 문자열 문자를 수동으로 "YYMM"으로 재배열하는 것을 포함했습니다.
이 중간 수정은 오해의 소지가 있는 주석과 잘못된 비난으로 정당화되었습니다.
개발자는 입력 형식이 다른 곳에서 변경되었다고 믿었기 때문에 복잡한 재배열이 필요했습니다.
Carlos G는 sscanf 형식 문자열을 수정하여 깔끔한 해결책을 제공했습니다.
새로운 코드는 "MMYY" 입력 형식을 올바르게 가정합니다.
불필요한 문자열 조작 없이 월 및 년도 변수에 직접 입력을 파싱합니다."
thedailywtf.com
CodeSOD: Going on a teDa
