[PPL-devel] [GIT] ppl/ppl(master): ascii_load() methods now perform more stringent checks on the input.
Roberto Bagnara
bagnara at cs.unipr.it
Fri Mar 27 08:46:54 CET 2009
Module: ppl/ppl
Branch: master
Commit: 099b4c25383b66fd3958f0b74c85dbdbc1dfc01b
URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=099b4c25383b66fd3958f0b74c85dbdbc1dfc01b
Author: Roberto Bagnara <bagnara at cs.unipr.it>
Date: Fri Mar 27 08:41:52 2009 +0100
ascii_load() methods now perform more stringent checks on the input.
---
src/Bit_Matrix.cc | 2 +-
src/Congruence.cc | 2 +-
src/Congruence_System.cc | 2 +-
src/Constraint_System.cc | 4 ++--
src/Generator_System.cc | 6 ++++--
src/Grid_Generator_System.cc | 2 +-
src/Linear_Row.cc | 2 +-
src/Linear_System.cc | 2 +-
src/Matrix.cc | 2 +-
src/Row.cc | 4 ++--
10 files changed, 15 insertions(+), 13 deletions(-)
diff --git a/src/Bit_Matrix.cc b/src/Bit_Matrix.cc
index 5a96467..ac126c5 100644
--- a/src/Bit_Matrix.cc
+++ b/src/Bit_Matrix.cc
@@ -161,7 +161,7 @@ PPL::Bit_Matrix::ascii_load(std::istream& s) {
std::string str;
if (!(s >> nrows))
return false;
- if (!(s >> str))
+ if (!(s >> str) || str != "x")
return false;
if (!(s >> ncols))
return false;
diff --git a/src/Congruence.cc b/src/Congruence.cc
index cf79d40..3967117 100644
--- a/src/Congruence.cc
+++ b/src/Congruence.cc
@@ -240,7 +240,7 @@ PPL::Congruence::ascii_load(std::istream& s) {
for (dimension_type col = 0; col < new_size - 1; ++col)
if (!(s >> x[col]))
return false;
- if (!(s >> str) || (str.compare("m") != 0))
+ if (!(s >> str) || str != "m")
return false;
if (!(s >> x[new_size-1]))
return false;
diff --git a/src/Congruence_System.cc b/src/Congruence_System.cc
index 7462706..aecb8bc 100644
--- a/src/Congruence_System.cc
+++ b/src/Congruence_System.cc
@@ -408,7 +408,7 @@ PPL::Congruence_System::ascii_load(std::istream& s) {
dimension_type num_columns;
if (!(s >> num_rows))
return false;
- if (!(s >> str))
+ if (!(s >> str) || str != "x")
return false;
if (!(s >> num_columns))
return false;
diff --git a/src/Constraint_System.cc b/src/Constraint_System.cc
index 21240aa..bb477d5 100644
--- a/src/Constraint_System.cc
+++ b/src/Constraint_System.cc
@@ -518,7 +518,7 @@ PPL::Constraint_System::ascii_load(std::istream& s) {
dimension_type ncols;
if (!(s >> nrows))
return false;
- if (!(s >> str))
+ if (!(s >> str) || str != "x")
return false;
if (!(s >> ncols))
return false;
@@ -544,7 +544,7 @@ PPL::Constraint_System::ascii_load(std::istream& s) {
return false;
if (str == "=")
x[i].set_is_equality();
- else
+ else if (str == ">=" || str == ">")
x[i].set_is_inequality();
// Checking for equality of actual and declared types.
diff --git a/src/Generator_System.cc b/src/Generator_System.cc
index b95835b..4793f5d 100644
--- a/src/Generator_System.cc
+++ b/src/Generator_System.cc
@@ -886,7 +886,7 @@ PPL::Generator_System::ascii_load(std::istream& s) {
dimension_type ncols;
if (!(s >> nrows))
return false;
- if (!(s >> str))
+ if (!(s >> str) || str != "x")
return false;
if (!(s >> ncols))
return false;
@@ -912,8 +912,10 @@ PPL::Generator_System::ascii_load(std::istream& s) {
return false;
if (str == "L")
x[i].set_is_line();
- else
+ else if (str == "R" || str == "P" || str == "C")
x[i].set_is_ray_or_point();
+ else
+ return false;
// Checking for equality of actual and declared types.
switch (x[i].type()) {
diff --git a/src/Grid_Generator_System.cc b/src/Grid_Generator_System.cc
index 3056eb5..165cbf3 100644
--- a/src/Grid_Generator_System.cc
+++ b/src/Grid_Generator_System.cc
@@ -218,7 +218,7 @@ PPL::Grid_Generator_System::ascii_load(std::istream& s) {
if (!(s >> num_rows))
return false;
std::string str;
- if (!(s >> str))
+ if (!(s >> str) || str != "x")
return false;
if (!(s >> num_columns))
return false;
diff --git a/src/Linear_Row.cc b/src/Linear_Row.cc
index 7829f79..f536abe 100644
--- a/src/Linear_Row.cc
+++ b/src/Linear_Row.cc
@@ -211,7 +211,7 @@ PPL::Linear_Row::ascii_load(std::istream& s) {
for (dimension_type col = 0; col < new_size; ++col)
if (!(s >> x[col]))
return false;
- if (!(s >> str) || (str.compare("f") != 0))
+ if (!(s >> str) || str != "f")
return false;
return flags().ascii_load(s);
}
diff --git a/src/Linear_System.cc b/src/Linear_System.cc
index a402bcd..f5e651d 100644
--- a/src/Linear_System.cc
+++ b/src/Linear_System.cc
@@ -152,7 +152,7 @@ PPL::Linear_System::ascii_load(std::istream& s) {
dimension_type ncols;
if (!(s >> nrows))
return false;
- if (!(s >> str))
+ if (!(s >> str) || str != "x")
return false;
if (!(s >> ncols))
return false;
diff --git a/src/Matrix.cc b/src/Matrix.cc
index fc81df1..19eae9d 100644
--- a/src/Matrix.cc
+++ b/src/Matrix.cc
@@ -303,7 +303,7 @@ PPL::Matrix::ascii_load(std::istream& s) {
dimension_type x_num_cols;
if (!(s >> x_num_rows))
return false;
- if (!(s >> str) || (str.compare("x") != 0))
+ if (!(s >> str) || str != "x")
return false;
if (!(s >> x_num_cols))
return false;
diff --git a/src/Row.cc b/src/Row.cc
index 39d292f..addd828 100644
--- a/src/Row.cc
+++ b/src/Row.cc
@@ -149,7 +149,7 @@ bool
PPL::Row::Flags::ascii_load(std::istream& s) {
std::string str;
std::streamsize sz = s.width(2);
- if (!(s >> str) || (str.compare("0x") != 0))
+ if (!(s >> str) || str != "0x")
return false;
s.width(sz);
std::istream::fmtflags f = s.setf(std::istream::hex);
@@ -193,7 +193,7 @@ PPL::Row::ascii_load(std::istream& s) {
for (dimension_type col = 0; col < new_size; ++col)
if (!(s >> x[col]))
return false;
- if (!(s >> str) || (str.compare("f") != 0))
+ if (!(s >> str) || str != "f")
return false;
return flags().ascii_load(s);
}
More information about the PPL-devel
mailing list