diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2009-12-15 19:54:51 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2009-12-15 19:54:51 +0100 |
commit | 1e119f37b85b90c5a9a17fdcbc80625727b4ab66 (patch) | |
tree | 2eda8402810f7148304c3f7ee878b86c9dcb67c8 /lib | |
parent | 661875fe000fd0d8469ae20d587fa84624d7f262 (diff) | |
download | abrt-1e119f37b85b90c5a9a17fdcbc80625727b4ab66.tar.gz abrt-1e119f37b85b90c5a9a17fdcbc80625727b4ab66.tar.xz abrt-1e119f37b85b90c5a9a17fdcbc80625727b4ab66.zip |
fix all instances of atoi() usage
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Plugins/CCpp.cpp | 10 | ||||
-rw-r--r-- | lib/Plugins/Catcut.cpp | 4 | ||||
-rw-r--r-- | lib/Plugins/FileTransfer.cpp | 4 | ||||
-rw-r--r-- | lib/Plugins/Firefox.cpp | 8 | ||||
-rw-r--r-- | lib/Plugins/Mailx.cpp | 2 | ||||
-rw-r--r-- | lib/Plugins/SQLite3.cpp | 4 | ||||
-rw-r--r-- | lib/Plugins/TicketUploader.cpp | 4 | ||||
-rw-r--r-- | lib/Utils/CrashTypesSocket.cpp | 2 | ||||
-rw-r--r-- | lib/Utils/Makefile.am | 1 | ||||
-rw-r--r-- | lib/Utils/xatonum.cpp | 50 |
10 files changed, 70 insertions, 19 deletions
diff --git a/lib/Plugins/CCpp.cpp b/lib/Plugins/CCpp.cpp index 0fe3d32a..c9a31c7e 100644 --- a/lib/Plugins/CCpp.cpp +++ b/lib/Plugins/CCpp.cpp @@ -309,7 +309,7 @@ static void GetBacktrace(const char *pDebugDumpDir, args[11] = (char*)"info sharedlib"; args[12] = NULL; - ExecVP(args, atoi(UID.c_str()), pBacktrace); + ExecVP(args, xatoi_u(UID.c_str()), pBacktrace); } static void GetIndependentBuildIdPC(const char *unstrip_n_output, @@ -355,7 +355,7 @@ static string run_unstrip_n(const char *pDebugDumpDir) args[3] = NULL; string output; - ExecVP(args, atoi(UID.c_str()), output); + ExecVP(args, xatoi_u(UID.c_str()), output); free(args[1]); @@ -575,7 +575,7 @@ string CAnalyzerCCpp::GetGlobalUUID(const char *pDebugDumpDir) close(pipeout[0]); /* read side of the pipe */ /* abrt-backtrace is executed under the user's uid and gid. */ - uid_t uid = atoi(uid_str.c_str()); + uid_t uid = xatoi_u(uid_str.c_str()); struct passwd* pw = getpwuid(uid); gid_t gid = pw ? pw->pw_gid : uid; setgroups(1, &gid); @@ -670,7 +670,7 @@ void CAnalyzerCCpp::CreateReport(const char *pDebugDumpDir, int force) dd.Close(); /* do not keep dir locked longer than needed */ string build_ids; - if (m_bInstallDebugInfo && DebuginfoCheckPolkit(atoi(UID.c_str()))) + if (m_bInstallDebugInfo && DebuginfoCheckPolkit(xatoi_u(UID.c_str()))) { if (m_nDebugInfoCacheMB > 0) { @@ -761,7 +761,7 @@ void CAnalyzerCCpp::SetSettings(const map_plugin_settings_t& pSettings) it = pSettings.find("DebugInfoCacheMB"); if (it != end) { - m_nDebugInfoCacheMB = atoi(it->second.c_str()); + m_nDebugInfoCacheMB = xatou(it->second.c_str()); } it = pSettings.find("InstallDebugInfo"); if (it == end) //compat, remove after 0.0.11 diff --git a/lib/Plugins/Catcut.cpp b/lib/Plugins/Catcut.cpp index ebddfdd3..35f56f25 100644 --- a/lib/Plugins/Catcut.cpp +++ b/lib/Plugins/Catcut.cpp @@ -510,12 +510,12 @@ void CReporterCatcut::SetSettings(const map_plugin_settings_t& pSettings) it = pSettings.find("RetryCount"); if (it != end) { - m_nRetryCount = atoi(it->second.c_str()); + m_nRetryCount = xatoi_u(it->second.c_str()); } it = pSettings.find("RetryDelay"); if (it != end) { - m_nRetryDelay = atoi(it->second.c_str()); + m_nRetryDelay = xatoi_u(it->second.c_str()); } } diff --git a/lib/Plugins/FileTransfer.cpp b/lib/Plugins/FileTransfer.cpp index c98645cf..08bba6ca 100644 --- a/lib/Plugins/FileTransfer.cpp +++ b/lib/Plugins/FileTransfer.cpp @@ -388,13 +388,13 @@ void CFileTransfer::SetSettings(const map_plugin_settings_t& pSettings) it = pSettings.find("RetryCount"); if (it != end) { - m_nRetryCount = atoi(it->second.c_str()); + m_nRetryCount = xatoi_u(it->second.c_str()); } it = pSettings.find("RetryDelay"); if (it != end) { - m_nRetryDelay = atoi(it->second.c_str()); + m_nRetryDelay = xatoi_u(it->second.c_str()); } it = pSettings.find("ArchiveType"); diff --git a/lib/Plugins/Firefox.cpp b/lib/Plugins/Firefox.cpp index bcc59485..2bb7f9c5 100644 --- a/lib/Plugins/Firefox.cpp +++ b/lib/Plugins/Firefox.cpp @@ -281,7 +281,7 @@ static void GetBacktrace(const char *pDebugDumpDir, std::string& pBacktrace) args[9] = (char*)"thread apply all backtrace full"; args[10] = NULL; - ExecVP(args, atoi(UID.c_str()), pBacktrace); + ExecVP(args, xatoi_u(UID.c_str()), pBacktrace); free(args[5]); free(args[7]); @@ -454,7 +454,7 @@ static std::string run_unstrip_n(const char *pDebugDumpDir) args[3] = NULL; std::string output; - ExecVP(args, atoi(UID.c_str()), output); + ExecVP(args, xatoi_u(UID.c_str()), output); free(args[1]); @@ -886,7 +886,7 @@ void CAnalyzerFirefox::CreateReport(const char *pDebugDumpDir, int force) dd.Close(); /* do not keep dir locked longer than needed */ std::string build_ids; - if (m_bInstallDebugInfo && DebuginfoCheckPolkit(atoi(UID.c_str()))) { + if (m_bInstallDebugInfo && DebuginfoCheckPolkit(xatoi_u(UID.c_str()))) { if (m_nDebugInfoCacheMB > 0) trim_debuginfo_cache(m_nDebugInfoCacheMB); InstallDebugInfos(pDebugDumpDir, build_ids); @@ -974,7 +974,7 @@ void CAnalyzerFirefox::SetSettings(const map_plugin_settings_t& pSettings) it = pSettings.find("DebugInfoCacheMB"); if (it != end) { - m_nDebugInfoCacheMB = atoi(it->second.c_str()); + m_nDebugInfoCacheMB = xatou(it->second.c_str()); } it = pSettings.find("InstallDebugInfo"); if (it == end) //compat, remove after 0.0.11 diff --git a/lib/Plugins/Mailx.cpp b/lib/Plugins/Mailx.cpp index b06edebb..6904c169 100644 --- a/lib/Plugins/Mailx.cpp +++ b/lib/Plugins/Mailx.cpp @@ -163,7 +163,7 @@ std::string CMailx::Report(const map_crash_report_t& pCrashReport, update_client(_("Sending an email...")); const char *uid_str = pCrashReport.find(CD_MWUID)->second[CD_CONTENT].c_str(); - exec_and_feed_input(atoi(uid_str), emailBody.c_str(), args); + exec_and_feed_input(xatoi_u(uid_str), emailBody.c_str(), args); while (*args) { diff --git a/lib/Plugins/SQLite3.cpp b/lib/Plugins/SQLite3.cpp index c3f7a7d8..12f8a5db 100644 --- a/lib/Plugins/SQLite3.cpp +++ b/lib/Plugins/SQLite3.cpp @@ -198,9 +198,9 @@ static bool check_table(sqlite3 *db) if (pos != string::npos) { string tableVersion = tableName.substr(pos + 2); - if (atoi(tableVersion.c_str()) < ABRT_TABLE_VERSION) + if (xatoi_u(tableVersion.c_str()) < ABRT_TABLE_VERSION) { - update_from_old_ver(db, atoi(tableVersion.c_str())); + update_from_old_ver(db, xatoi_u(tableVersion.c_str())); } return true; } diff --git a/lib/Plugins/TicketUploader.cpp b/lib/Plugins/TicketUploader.cpp index 06b6cde8..14f5e1d5 100644 --- a/lib/Plugins/TicketUploader.cpp +++ b/lib/Plugins/TicketUploader.cpp @@ -394,12 +394,12 @@ void CTicketUploader::SetSettings(const map_plugin_settings_t& pSettings) it = pSettings.find("RetryCount"); if (it != end) { - m_nRetryCount = atoi(it->second.c_str()); + m_nRetryCount = xatoi_u(it->second.c_str()); } it = pSettings.find("RetryDelay"); if (it != end) { - m_nRetryDelay = atoi(it->second.c_str()); + m_nRetryDelay = xatoi_u(it->second.c_str()); } } diff --git a/lib/Utils/CrashTypesSocket.cpp b/lib/Utils/CrashTypesSocket.cpp index f16e2a9a..3525c6a5 100644 --- a/lib/Utils/CrashTypesSocket.cpp +++ b/lib/Utils/CrashTypesSocket.cpp @@ -114,7 +114,7 @@ static int get_number_from_string(const std::string& pMessage, int& len) } } len = ii + 1; - return atoi(sNumber.c_str()); + return xatoi(sNumber.c_str()); } //TODO: remove constant 4 and place it in a message diff --git a/lib/Utils/Makefile.am b/lib/Utils/Makefile.am index 9618751a..4f6670b8 100644 --- a/lib/Utils/Makefile.am +++ b/lib/Utils/Makefile.am @@ -14,6 +14,7 @@ libABRTUtils_la_SOURCES = \ logging.cpp \ copyfd.cpp \ skip_whitespace.cpp \ + xatonum.cpp \ popen_and_save_output.cpp \ stringops.cpp \ dirsize.cpp \ diff --git a/lib/Utils/xatonum.cpp b/lib/Utils/xatonum.cpp new file mode 100644 index 00000000..b096ca89 --- /dev/null +++ b/lib/Utils/xatonum.cpp @@ -0,0 +1,50 @@ +/* + * Utility routines. + * + * Copyright (C) 2003 Manuel Novoa III <mjn3@codepoet.org> + * + * Licensed under GPLv2, see file LICENSE in this tarball for details. + */ +#include "abrtlib.h" + +unsigned xatou(const char *numstr) +{ + unsigned r; + int old_errno; + char *e; + + if (*numstr < '0' || *numstr > '9') + goto inval; + + old_errno = errno; + errno = 0; + r = strtoul(numstr, &e, 10); + if (errno || numstr == e || *e != '\0') + goto inval; /* error / no digits / illegal trailing chars */ + errno = old_errno; /* Ok. So restore errno. */ + return r; + + inval: + error_msg_and_die("invalid number '%s'", numstr); +} + +int xatoi_u(const char *numstr) +{ + unsigned r = xatou(numstr); + if (r > (unsigned)INT_MAX) + error_msg_and_die("invalid number '%s'", numstr); + return r; +} + +int xatoi(const char *numstr) +{ + unsigned r; + + if (*numstr != '-') + return xatoi_u(numstr); + + r = xatou(numstr + 1); + if (r > (unsigned)INT_MAX + 1) + error_msg_and_die("invalid number '%s'", numstr); + return - (int)r; +} |