[fwbuilder-commits] [SCM] Firewall Builder GUI and Policy Compilers Open Source Code branch, develo
Brought to you by:
mikehorn
From: <gi...@ir...> - 2011-04-28 23:59:09
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "Firewall Builder GUI and Policy Compilers Open Source Code". The branch, development has been updated via 655fc9356fa7da1080ba7f44088caabe12a49db4 (commit) from 78c585de6246c1c5237bbdde37d38f953f7d777d (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 655fc9356fa7da1080ba7f44088caabe12a49db4 Author: Theron Tock <th...@ne...> Date: Thu Apr 28 16:58:22 2011 -0700 Fixes #2182. Convert use of sprintf to snprintf (hopefully in a way that also works on windows). diff --git a/src/compiler_lib/CompilerDriver.cpp b/src/compiler_lib/CompilerDriver.cpp index 9b9bd12..44dd8a0 100644 --- a/src/compiler_lib/CompilerDriver.cpp +++ b/src/compiler_lib/CompilerDriver.cpp @@ -462,9 +462,8 @@ void CompilerDriver::commonChecks2(Cluster *cluster, Firewall *fw) if (!iface->isDyn()) { - char errstr[256]; - sprintf(errstr, - _("Wildcard interface '%s' must be dynamic."), + QString errstr; + errstr.sprintf(_("Wildcard interface '%s' must be dynamic."), iface->getName().c_str() ); throw FWException(errstr); } diff --git a/src/libfwbuilder/src/fwbuilder/FWObjectDatabase.cpp b/src/libfwbuilder/src/fwbuilder/FWObjectDatabase.cpp index 2b8e762..9b9e184 100644 --- a/src/libfwbuilder/src/fwbuilder/FWObjectDatabase.cpp +++ b/src/libfwbuilder/src/fwbuilder/FWObjectDatabase.cpp @@ -99,6 +99,7 @@ using namespace libfwbuilder; int id_seed = 1000; #ifdef _WIN32 static int cached_pid = _getpid(); +#define snprintf sprintf_s #else static int cached_pid = getpid(); #endif @@ -211,7 +212,7 @@ string FWObjectDatabase::getStringId(int i_id) // TODO: Use proper GUID algorithm here char id_buf[64]; - sprintf(id_buf, "id%dX%d", i_id, cached_pid); + snprintf(id_buf, sizeof(id_buf), "id%dX%d", i_id, cached_pid); id_dict[i_id] = string(id_buf); id_dict_reverse[string(id_buf)] = i_id; return id_dict[i_id]; diff --git a/src/libfwbuilder/src/fwbuilder/FWObjectDatabase_tree_ops.cpp b/src/libfwbuilder/src/fwbuilder/FWObjectDatabase_tree_ops.cpp index da295cd..112cebe 100644 --- a/src/libfwbuilder/src/fwbuilder/FWObjectDatabase_tree_ops.cpp +++ b/src/libfwbuilder/src/fwbuilder/FWObjectDatabase_tree_ops.cpp @@ -48,6 +48,9 @@ using namespace std; using namespace libfwbuilder; +#ifdef _WIN32 +#define snprintf sprintf_s +#endif class FWObjectTreeScanner { @@ -492,7 +495,7 @@ FWObject* FWObjectDatabase::recursivelyCopySubtree(FWObject *target, std::map<int,int> &id_map) { char s[64]; - sprintf(s, ".copy_of_%p", source->getRoot()); + snprintf(s, sizeof(s), ".copy_of_%p", source->getRoot()); string dedup_attribute = s; FWObject *nobj = _recursively_copy_subtree(target, source, id_map, @@ -599,7 +602,7 @@ FWObject* FWObjectDatabase::_recursively_copy_subtree( // Check if we have already copied the same object before char s[64]; - sprintf(s, "%d", old_ptr_obj->getId()); + snprintf(s, sizeof(s), "%d", old_ptr_obj->getId()); n_ptr_obj = findObjectByAttribute(dedup_attribute, s); if (n_ptr_obj) { diff --git a/src/libfwbuilder/src/fwbuilder/TCPUDPService.cpp b/src/libfwbuilder/src/fwbuilder/TCPUDPService.cpp index 76c460e..7d88673 100644 --- a/src/libfwbuilder/src/fwbuilder/TCPUDPService.cpp +++ b/src/libfwbuilder/src/fwbuilder/TCPUDPService.cpp @@ -33,6 +33,10 @@ using namespace libfwbuilder; using namespace std; +#ifdef _WIN32 +#define snprintf sprintf_s +#endif + const char *TCPUDPService::TYPENAME={"TCPUDPService"}; TCPUDPService::TCPUDPService() @@ -93,14 +97,14 @@ xmlNodePtr TCPUDPService::toXML(xmlNodePtr xml_parent_node) throw(FWException) char str[128]; - sprintf(str,"%d",src_range_start); + snprintf(str, sizeof(str), "%d", src_range_start); xmlNewProp(me, TOXMLCAST("src_range_start"), TOXMLCAST(str)); - sprintf(str,"%d",src_range_end); + snprintf(str, sizeof(str), "%d", src_range_end); xmlNewProp(me, TOXMLCAST("src_range_end"), TOXMLCAST(str)); - sprintf(str,"%d",dst_range_start); + snprintf(str, sizeof(str), "%d", dst_range_start); xmlNewProp(me, TOXMLCAST("dst_range_start"), TOXMLCAST(str)); - sprintf(str,"%d",dst_range_end); + snprintf(str, sizeof(str), "%d", dst_range_end); xmlNewProp(me, TOXMLCAST("dst_range_end"), TOXMLCAST(str)); return me; diff --git a/src/libfwbuilder/src/fwbuilder/snmp.cpp b/src/libfwbuilder/src/fwbuilder/snmp.cpp index 3b1acaf..e8eb22b 100644 --- a/src/libfwbuilder/src/fwbuilder/snmp.cpp +++ b/src/libfwbuilder/src/fwbuilder/snmp.cpp @@ -60,6 +60,10 @@ #include <sstream> #include <iterator> +#ifdef _WIN32 +#define snprintf sprintf_s +#endif + /** * Define this if you need extra debug output. */ @@ -69,18 +73,19 @@ using namespace std; using namespace libfwbuilder; /* Compiled OIDs */ -const char *SNMPQuery::SNMP_INTERFACE_ASTATUS= ".1.3.6.1.2.1.2.2.1.7"; -const char *SNMPQuery::SNMP_INTERFACE_OSTATUS= ".1.3.6.1.2.1.2.2.1.8"; -const char *SNMPQuery::SNMP_INTERFACE_INDEX = ".1.3.6.1.2.1.2.2.1.1"; -const char *SNMPQuery::SNMP_INTERFACES_DESCR = ".1.3.6.1.2.1.2.2.1.2"; -const char *SNMPQuery::SNMP_INTERFACES_PHYSA = ".1.3.6.1.2.1.2.2.1.6"; -const char *SNMPQuery::SNMP_INTERFACES_TYPE = ".1.3.6.1.2.1.2.2.1.3"; -const char *SNMPQuery::SNMP_ADDR_INDEX_TABLE = ".1.3.6.1.2.1.4.20.1.2"; -const char *SNMPQuery::SNMP_NMASK_TABLE = ".1.3.6.1.2.1.4.20.1.3"; -const char *SNMPQuery::SNMP_ADDR_TABLE = ".1.3.6.1.2.1.4.20.1.1"; -const char *SNMPQuery::SNMP_BCAST_TABLE = ".1.3.6.1.2.1.4.20.1.4"; -const char *SNMPQuery::SNMP_AT_TABLE_NET = ".1.3.6.1.2.1.3.1.1.3"; -const char *SNMPQuery::SNMP_AT_TABLE_PHYS = ".1.3.6.1.2.1.3.1.1.2"; +/* We use #define so the compiler can do string concatenation for snprintf */ +#define SNMP_INTERFACE_ASTATUS ".1.3.6.1.2.1.2.2.1.7" +#define SNMP_INTERFACE_OSTATUS ".1.3.6.1.2.1.2.2.1.8" +#define SNMP_INTERFACE_INDEX ".1.3.6.1.2.1.2.2.1.1" +#define SNMP_INTERFACES_DESCR ".1.3.6.1.2.1.2.2.1.2" +#define SNMP_INTERFACES_PHYSA ".1.3.6.1.2.1.2.2.1.6" +#define SNMP_INTERFACES_TYPE ".1.3.6.1.2.1.2.2.1.3" +#define SNMP_ADDR_INDEX_TABLE ".1.3.6.1.2.1.4.20.1.2" +#define SNMP_NMASK_TABLE ".1.3.6.1.2.1.4.20.1.3" +#define SNMP_ADDR_TABLE ".1.3.6.1.2.1.4.20.1.1" +#define SNMP_BCAST_TABLE ".1.3.6.1.2.1.4.20.1.4" +#define SNMP_AT_TABLE_NET ".1.3.6.1.2.1.3.1.1.3" +#define SNMP_AT_TABLE_PHYS ".1.3.6.1.2.1.3.1.1.2" const char *SNMPQuery::SNMP_SYSNAME = ".1.3.6.1.2.1.1.5.0"; const char *SNMPQuery::SNMP_SYSDESCR = ".1.3.6.1.2.1.1.1.0"; @@ -648,7 +653,7 @@ void SNMPQuery::fetchInterfaces(Logger *logger, SyncFlag *stop_program, char oid[1024]; // Get admin status - sprintf(oid, "%s.%ld", SNMP_INTERFACE_ASTATUS , ifindex); + snprintf(oid, sizeof(oid), SNMP_INTERFACE_ASTATUS ".%ld", ifindex); v=c->get(oid); if(v.size()!=1) throw FWException( @@ -667,7 +672,7 @@ void SNMPQuery::fetchInterfaces(Logger *logger, SyncFlag *stop_program, } // Get operational status - sprintf(oid, "%s.%ld", SNMP_INTERFACE_OSTATUS , ifindex); + snprintf(oid, sizeof(oid), SNMP_INTERFACE_OSTATUS ".%ld", ifindex); v=c->get(oid); if(v.size()!=1) throw FWException( @@ -679,7 +684,7 @@ void SNMPQuery::fetchInterfaces(Logger *logger, SyncFlag *stop_program, /* gather all information for interface ifindex and create Interface object */ // Get desriptions - sprintf(oid,"%s.%ld", SNMP_INTERFACES_DESCR , ifindex); + snprintf(oid, sizeof(oid), SNMP_INTERFACES_DESCR ".%ld", ifindex); v=c->get(oid); string descr = SNMPVariable::varList2String(v); SNMPVariable::freeVarList(v); @@ -687,7 +692,7 @@ void SNMPQuery::fetchInterfaces(Logger *logger, SyncFlag *stop_program, list<string> &addlist = addr[ifindex]; // Get physical address - sprintf(oid, "%s.%ld", SNMP_INTERFACES_PHYSA , ifindex); + snprintf(oid, sizeof(oid), SNMP_INTERFACES_PHYSA ".%ld", ifindex); v=c->get(oid); if(v.size()!=1) throw FWException(string("Unexpected response length for OID: ")+oid); @@ -697,7 +702,7 @@ void SNMPQuery::fetchInterfaces(Logger *logger, SyncFlag *stop_program, SNMPVariable::freeVarList(v); // Get type - sprintf(oid,"%s.%ld", SNMP_INTERFACES_TYPE , ifindex); + snprintf(oid, sizeof(oid), SNMP_INTERFACES_TYPE ".%ld", ifindex); v=c->get(oid); if(v.size()!=1) throw FWException(string("Unexpected response length for OID: ")+oid); @@ -1124,7 +1129,7 @@ SNMPVariable *SNMPVariable::create(struct variable_list *vars) throw(FWException return new SNMPVariable_IPaddr(vars->val.string, vars->val_len); default: char x[32]; - sprintf(x, "%d", (int)vars->type); + snprintf(x, sizeof(x), "%d", (int)vars->type); throw FWException(string("Unknown SNMP variable type: ") + x); } } @@ -1132,7 +1137,7 @@ SNMPVariable *SNMPVariable::create(struct variable_list *vars) throw(FWException string SNMPVariable_Int::toString() { char x[32]; - sprintf(x, "%ld", value); + snprintf(x, sizeof(x), "%ld", value); return x; } @@ -1143,10 +1148,10 @@ string SNMPVariable_Bits::toString() { res += "."; - char x[8]; + char x[12]; //TODO: now we print it in hex // we should print it in binary. - sprintf(x, "%d", (uint32_t)value[i]); + snprintf(x, sizeof(x), "%d", (uint32_t)value[i]); //i += 4; res += x; } @@ -1160,8 +1165,8 @@ string SNMPVariable_IPaddr::toString() { if(i) res+="."; - char x[8]; - sprintf(x,"%d", (unsigned int)value[i]); + char x[12]; + snprintf(x, sizeof(x), "%d", (unsigned int)value[i]); res+=x; } res+="]"; @@ -1205,7 +1210,7 @@ const string SNMPVariable_String::toHexString() res+=':'; u_char c=value[i]; char buf[16]; - sprintf(buf,"%02X",(unsigned int)c); + snprintf(buf, sizeof(buf), "%02X", (unsigned int)c); res+=buf; } return res; @@ -1214,14 +1219,14 @@ const string SNMPVariable_String::toHexString() string SNMPVariable_Counter64::toString() { char x[70]; - sprintf(x,"[%ld:%ld]", (long)low, (long)high); + snprintf(x, sizeof(x), "[%ld:%ld]", (long)low, (long)high); return x; } string SNMPVariable_OID::toString() { char x[32]; - sprintf(x,"%ld", (long)value); + snprintf(x, sizeof(x), "%ld", (long)value); return x; } diff --git a/src/libgui/ObjectManipulator_slots.cpp b/src/libgui/ObjectManipulator_slots.cpp index c70047a..8e9c7d9 100644 --- a/src/libgui/ObjectManipulator_slots.cpp +++ b/src/libgui/ObjectManipulator_slots.cpp @@ -231,13 +231,15 @@ void ObjectManipulator::pasteObj() continue; // Check if we have already copied the same object before - char s[64]; - sprintf(s, ".copy_of_%p", co->getRoot()); - string dedup_attribute = s; + QString buff; + buff.sprintf(".copy_of_%p", co->getRoot()); + string dedup_attribute = buff.toAscii().constData(); - sprintf(s, "%d", co->getId()); + buff.sprintf("%d", co->getId()); + QByteArray bytes = buff.toAscii(); FWObject *n_obj = - target_object->getRoot()->findObjectByAttribute(dedup_attribute, s); + target_object->getRoot()->findObjectByAttribute(dedup_attribute, + bytes.constData()); if (n_obj) continue; last_object = actuallyPasteTo(target_object, co, map_ids); diff --git a/src/libgui/StartTipDialog.cpp b/src/libgui/StartTipDialog.cpp index 57030a9..6c94d9a 100644 --- a/src/libgui/StartTipDialog.cpp +++ b/src/libgui/StartTipDialog.cpp @@ -84,9 +84,8 @@ StartTipDialog::StartTipDialog(QWidget *parent): QDialog(parent) int tip_no = 1; while (true) { - char buf[64]; - sprintf(buf, "tip%02d.html", tip_no); - QString tip_file = QString(buf); + QString tip_file; + tip_file.sprintf("tip%02d.html", tip_no); QString contents; if (fwbdebug) qDebug("Trying tip file %s", tip_file.toAscii().constData()); ----------------------------------------------------------------------- Summary of changes: src/compiler_lib/CompilerDriver.cpp | 5 +- .../src/fwbuilder/FWObjectDatabase.cpp | 3 +- .../src/fwbuilder/FWObjectDatabase_tree_ops.cpp | 7 ++- src/libfwbuilder/src/fwbuilder/TCPUDPService.cpp | 12 +++-- src/libfwbuilder/src/fwbuilder/snmp.cpp | 57 +++++++++++--------- src/libgui/ObjectManipulator_slots.cpp | 12 +++-- src/libgui/StartTipDialog.cpp | 5 +- 7 files changed, 57 insertions(+), 44 deletions(-) hooks/post-receive -- Firewall Builder GUI and Policy Compilers Open Source Code |