diff options
Diffstat (limited to 'hwpfilter/source/hinfo.cxx')
-rw-r--r-- | hwpfilter/source/hinfo.cxx | 104 |
1 files changed, 79 insertions, 25 deletions
diff --git a/hwpfilter/source/hinfo.cxx b/hwpfilter/source/hinfo.cxx index 38d3b22fe659..3a5bb21d7429 100644 --- a/hwpfilter/source/hinfo.cxx +++ b/hwpfilter/source/hinfo.cxx @@ -84,15 +84,34 @@ bool HWPInfo::Read(HWPFile & hwpf) hwpf.Read1b(&paper.paper_direction, 1); /* 용지 방향 */ // paper geometry information - paper.paper_height = (short) hwpf.Read2b(); /* 용지 길이 */ - paper.paper_width = (short) hwpf.Read2b(); /* 용지 너비 */ - paper.top_margin = (short) hwpf.Read2b(); /* 위쪽 여백 */ - paper.bottom_margin = (short) hwpf.Read2b(); /* 아래쪽 여백 */ - paper.left_margin = (short) hwpf.Read2b(); /* 왼쪽 여백 */ - paper.right_margin = (short) hwpf.Read2b(); /* 오른쪽 여백 */ - paper.header_length = (short) hwpf.Read2b(); /* 머리말 길이 */ - paper.footer_length = (short) hwpf.Read2b(); /* 꼬리말 길이 */ - paper.gutter_length = (short) hwpf.Read2b(); /* 제본여백 */ + unsigned short tmp16; + if (!hwpf.Read2b(tmp16)) + return false; + paper.paper_height = tmp16; /* 용지 길이 */ + if (!hwpf.Read2b(tmp16)) + return false; + paper.paper_width = tmp16; /* 용지 너비 */ + if (!hwpf.Read2b(tmp16)) + return false; + paper.top_margin = tmp16; /* 위쪽 여백 */ + if (!hwpf.Read2b(tmp16)) + return false; + paper.bottom_margin = tmp16; /* 아래쪽 여백 */ + if (!hwpf.Read2b(tmp16)) + return false; + paper.left_margin = tmp16; /* 왼쪽 여백 */ + if (!hwpf.Read2b(tmp16)) + return false; + paper.right_margin = tmp16; /* 오른쪽 여백 */ + if (!hwpf.Read2b(tmp16)) + return false; + paper.header_length = tmp16; /* 머리말 길이 */ + if (!hwpf.Read2b(tmp16)) + return false; + paper.footer_length = tmp16; /* 꼬리말 길이 */ + if (!hwpf.Read2b(tmp16)) + return false; + paper.gutter_length = tmp16; /* 제본여백 */ hwpf.Read2b(&readonly, 1); /* 예약 */ hwpf.Read1b(reserved1, 4); /* 예약 */ hwpf.Read1b(&chain_info.chain_page_no, 1); /* 쪽 번호 연결 1-연결, 0-새로시작 (연결인쇄에서 사용) */ @@ -108,14 +127,25 @@ bool HWPInfo::Read(HWPFile & hwpf) // footnote hwpf.Read2b(&beginfnnum,1); /* 각주 시작번호 */ hwpf.Read2b(&countfn,1); /* 각주 갯수 */ - splinetext = (short) hwpf.Read2b(); - splinefn = (short) hwpf.Read2b(); - spfnfn = (short) hwpf.Read2b(); + + if (!hwpf.Read2b(tmp16)) + return false; + splinetext = tmp16; + if (!hwpf.Read2b(tmp16)) + return false; + splinefn = tmp16; + if (!hwpf.Read2b(tmp16)) + return false; + spfnfn = tmp16; hwpf.Read1b(&fnchar, 1); hwpf.Read1b(&fnlinetype, 1); // border layout for (int ii = 0; ii < 4; ++ii) - bordermargin[ii] = (short) hwpf.Read2b(); + { + if (!hwpf.Read2b(tmp16)) + return false; + bordermargin[ii] = tmp16; + } hwpf.Read2b(&borderline, 1); hwpf.Read1b(&empty_line_hide, 1); @@ -170,12 +200,23 @@ bool HWPSummary::Read(HWPFile & hwpf) bool ParaShape::Read(HWPFile & hwpf) { - pagebreak = 0; - left_margin = (short) hwpf.Read2b(); - right_margin = (short) hwpf.Read2b(); - indent = (short) hwpf.Read2b(); - lspacing = (short) hwpf.Read2b(); - pspacing_next = (short) hwpf.Read2b(); + pagebreak = 0; + unsigned short tmp16; + if (!hwpf.Read2b(tmp16)) + return false; + left_margin = tmp16; + if (!hwpf.Read2b(tmp16)) + return false; + right_margin = tmp16; + if (!hwpf.Read2b(tmp16)) + return false; + indent = tmp16; + if (!hwpf.Read2b(tmp16)) + return false; + lspacing = tmp16; + if (!hwpf.Read2b(tmp16)) + return false; + pspacing_next = tmp16; hwpf.Read1b(&condense, 1); hwpf.Read1b(&arrange_type, 1); @@ -183,17 +224,27 @@ bool ParaShape::Read(HWPFile & hwpf) { hwpf.Read1b(&tabs[ii].type, 1); hwpf.Read1b(&tabs[ii].dot_continue, 1); - tabs[ii].position = (short) hwpf.Read2b(); + if (!hwpf.Read2b(tmp16)) + return false; + tabs[ii].position = tmp16; } hwpf.Read1b(&coldef.ncols, 1); hwpf.Read1b(&coldef.separator, 1); - coldef.spacing = (short) hwpf.Read2b(); - coldef.columnlen = (short) hwpf.Read2b(); - coldef.columnlen0 = (short) hwpf.Read2b(); + if (!hwpf.Read2b(tmp16)) + return false; + coldef.spacing = tmp16; + if (!hwpf.Read2b(tmp16)) + return false; + coldef.columnlen = tmp16; + if (!hwpf.Read2b(tmp16)) + return false; + coldef.columnlen0 = tmp16; hwpf.Read1b(&shade, 1); hwpf.Read1b(&outline, 1); hwpf.Read1b(&outline_continue, 1); - pspacing_prev = (short) hwpf.Read2b(); + if (!hwpf.Read2b(tmp16)) + return false; + pspacing_prev = tmp16; hwpf.Read1b(reserved, 2); return (!hwpf.State()); @@ -202,7 +253,10 @@ bool ParaShape::Read(HWPFile & hwpf) bool CharShape::Read(HWPFile & hwpf) { - size = (short) hwpf.Read2b(); + unsigned short tmp16; + if (!hwpf.Read2b(tmp16)) + return false; + size = tmp16; hwpf.Read1b(font, NLanguage); hwpf.Read1b(ratio, NLanguage); hwpf.Read1b(space, NLanguage); |