knu project
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

137 lines
4.1 KiB

package kr.co.kihyun.text.hml;
import java.io.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class VirtualHtml {
private static final Logger LOG = LoggerFactory.getLogger(VirtualHtml.class);
private String head;
private String end;
public VirtualHtml() {
}
public String getHead() {
return head;
}
public String getEnd() {
return end;
}
public void IOhandler(String a, String b) throws IOException {
BufferedWriter bw = null;
try {
//v2. 4.경로 조작 및 자원 삽입_CWE-22/23/36/99 : Update by KWON,HAN
// bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(b), "KSC5601"));
// bw.write(getVirtualHtml(new FileInputStream(a)));
// bw.flush();
// bw.close();
String svrFilename = b;
if (svrFilename != null && !"".equals(svrFilename)) {
// 수정 : 외부 입력값 필터링
svrFilename = svrFilename.replaceAll("/","");
svrFilename = svrFilename.replaceAll("\\","");
//svrFilename = svrFilename.replaceAll(".","");
//svrFilename = svrFilename.replaceAll("&","");
LOG.debug("v2. 4.경로 조작 및 자원 삽입_CWE-22/23/36/99 : VirtualHtml.IOhandler svrFilename={} / Not Test", svrFilename);
bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(b), "KSC5601"));
if (bw != null) {
bw.write(getVirtualHtml(new FileInputStream(a)));
bw.flush();
bw.close();
}
}
//================================================================
} catch (IOException ioex) {
ioex.printStackTrace();
} finally {
//v2 21.부적절한 자원 해제 (IO)_CWE-404 : Add by YOUNGJUN,CHO
if (bw != null) {
bw.close();
}
//++++++++++++++++++++++++++++++++++++++++++++++++
}
}
public String getVirtualHtml(FileInputStream fis) throws IOException, UnsupportedEncodingException {
InputStreamReader isr = null;
BufferedReader br = null;
String str = "";
String html = "";
int offset = 0;
int opener_idx1 = 0;
int closer_idx1 = 0;
int opener_idx2 = 0;
int closer_idx2 = 0;
isr = new InputStreamReader(fis, "KSC5601");
//15.부적절한 자원 해제(Reader/Writer)_CWE-404 : Add by KWON,HAN
try {
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if (!isr.ready())
return null;
br = new BufferedReader(isr);
//15.부적절한 자원 해제(Reader/Writer)_CWE-404 : Add by KWON,HAN
} catch (IOException e) {
e.printStackTrace();
} finally {
isr.close();
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//v2 36.경쟁조건 : 검사시점과 사용시점 (File)_CWE-367 : Update by YOUNGJUN,CHO
/*
str = br.readLine();
while (str != null) {
html = html + str + "\n";
str = br.readLine();
}
*/
while ((str = br.readLine()) != null) {
html = html + str + "\n";
}
//================================================
opener_idx1 = html.indexOf("<!--");
closer_idx1 = html.indexOf("-->");
opener_idx2 = html.lastIndexOf("<!--");
closer_idx2 = html.lastIndexOf("-->");
if (opener_idx1 != -1) {
this.head = html.substring(opener_idx1, closer_idx1 + 3);
this.end = html.substring(opener_idx2, closer_idx2 + 3);
} else {
html.substring(offset, html.length());
}
if (closer_idx2 == -1) {
offset = closer_idx2 + 1;
}
br.close();
isr.close();
fis.close();
return html;
}
}