/* goodG2B() - use GoodSource and BadSink */ private void goodG2B() throws Throwable { byte data; /* FIX: Use a hardcoded number that won't cause underflow, overflow, divide by zero, or loss-of-precision issues */ data = 2; CWE191_Integer_Underflow__byte_console_readLine_multiply_81_base baseObject = new CWE191_Integer_Underflow__byte_console_readLine_multiply_81_goodG2B(); baseObject.action(data); }
/* goodB2G() - use BadSource and GoodSink */ private void goodB2G() throws Throwable { byte data; /* init data */ data = -1; /* POTENTIAL FLAW: Read data from console with readLine*/ BufferedReader readerBuffered = null; InputStreamReader readerInputStream = null; try { readerInputStream = new InputStreamReader(System.in, "UTF-8"); readerBuffered = new BufferedReader(readerInputStream); String stringNumber = readerBuffered.readLine(); if (stringNumber != null) { data = Byte.parseByte(stringNumber.trim()); } } catch (IOException exceptIO) { IO.logger.log(Level.WARNING, "Error with stream reading", exceptIO); } catch (NumberFormatException exceptNumberFormat) { IO.logger.log(Level.WARNING, "Error with number parsing", exceptNumberFormat); } finally { /* clean up stream reading objects */ try { if (readerBuffered != null) { readerBuffered.close(); } } catch (IOException exceptIO) { IO.logger.log(Level.WARNING, "Error closing BufferedReader", exceptIO); } finally { try { if (readerInputStream != null) { readerInputStream.close(); } } catch (IOException exceptIO) { IO.logger.log(Level.WARNING, "Error closing InputStreamReader", exceptIO); } } } CWE191_Integer_Underflow__byte_console_readLine_multiply_81_base baseObject = new CWE191_Integer_Underflow__byte_console_readLine_multiply_81_goodB2G(); baseObject.action(data); }