]> git.stg.codes - stg.git/blobdiff - projects/stargazer/plugins/store/postgresql/postgresql_store_users.cpp
Fix accessing array element above array bounds in rsconf
[stg.git] / projects / stargazer / plugins / store / postgresql / postgresql_store_users.cpp
index 6a40979f77e008a645d3f1b42058f3bbb96891d9..11c757f263b13043bda75dc54280fda34b3618b8 100644 (file)
 
 #include <libpq-fe.h>
 
-#include "stg_const.h"
-#include "postgresql_store.h"
-#include "stg_locker.h"
+#include "stg/const.h"
+#include "stg/locker.h"
 #include "../../../stg_timer.h"
+#include "postgresql_store.h"
 
 //-----------------------------------------------------------------------------
 int POSTGRESQL_STORE::GetUsersList(vector<string> * usersList) const
@@ -906,7 +906,11 @@ for (int i = 0; i < tuples; ++i)
         }
     else
         {
-        conf->userdata[i] = PQgetvalue(result, i, 1);
+        if (num < USERDATA_NUM &&
+            num >= 0)
+            {
+            conf->userdata[num] = PQgetvalue(result, i, 1);
+            }
         }
     }
 
@@ -1056,7 +1060,7 @@ std::stringstream query;
 query << "SELECT sp_add_param_log_entry("
             "'" << elogin << "', "
             "'" << eadminLogin << "', CAST('"
-            << inet_ntostring(admIP) << "/24' AS INET), "
+            << inet_ntostring(admIP) << "/32' AS INET), "
             "'" << eparam << "', "
             "CAST('" << Int2TS(stgTime) << "' AS TIMESTAMP), "
             "'" << eold << "', "
@@ -1330,7 +1334,7 @@ return 0;
 }
 
 //-----------------------------------------------------------------------------
-int POSTGRESQL_STORE::WriteDetailedStat(const map<IP_DIR_PAIR, STAT_NODE> * statTree,
+int POSTGRESQL_STORE::WriteDetailedStat(const map<IP_DIR_PAIR, STAT_NODE> & statTree,
                                       time_t lastStat,
                                       const string & login) const
 {
@@ -1370,7 +1374,7 @@ if (EscapeString(elogin))
 map<IP_DIR_PAIR, STAT_NODE>::const_iterator it;
 time_t currTime = time(NULL);
 
-for (it = statTree->begin(); it != statTree->end(); ++it)
+for (it = statTree.begin(); it != statTree.end(); ++it)
     {
     std::stringstream query;
     query << "INSERT INTO tb_detail_stats "