summaryrefslogtreecommitdiffstats
path: root/src/corelib/io/qstorageinfo_unix.cpp
diff options
context:
space:
mode:
authorEdward Welbourne <edward.welbourne@qt.io>2021-08-27 15:25:26 +0200
committerEdward Welbourne <edward.welbourne@qt.io>2021-08-30 17:46:00 +0200
commit7d33779a795afb54af1a96c0da93b532f9db3ba2 (patch)
treea760a2777d752fba7f91135ae7b80d37750d5745 /src/corelib/io/qstorageinfo_unix.cpp
parent5644af6f8a800a1516360a42ba4c1a8dc61fc516 (diff)
Convert various callers of strtou?ll() to call strntou?ll()
Where size is known or can readily be determined. Change-Id: I442e7ebb3757fdbf7d021a15e19aeba533b590a5 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io>
Diffstat (limited to 'src/corelib/io/qstorageinfo_unix.cpp')
-rw-r--r--src/corelib/io/qstorageinfo_unix.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/corelib/io/qstorageinfo_unix.cpp b/src/corelib/io/qstorageinfo_unix.cpp
index 6bb1978970..566ffe46bc 100644
--- a/src/corelib/io/qstorageinfo_unix.cpp
+++ b/src/corelib/io/qstorageinfo_unix.cpp
@@ -467,7 +467,7 @@ inline bool QStorageIterator::next()
if (fgets(ptr, buffer.size(), fp) == nullptr)
return false;
- size_t len = strlen(buffer.data());
+ size_t len = strlen(ptr);
if (len == 0)
return false;
while (Q_UNLIKELY(ptr[len - 1] != '\n' && !feof(fp))) {
@@ -482,27 +482,28 @@ inline bool QStorageIterator::next()
Q_ASSERT(len < size_t(buffer.size()));
}
ptr[len - 1] = '\0';
+ const char *const stop = ptr + len - 1;
// parse the line
bool ok;
mnt.mnt_freq = 0;
mnt.mnt_passno = 0;
- mnt.mount_id = qstrtoll(ptr, const_cast<const char **>(&ptr), 10, &ok);
+ mnt.mount_id = qstrntoll(ptr, stop - ptr, const_cast<const char **>(&ptr), 10, &ok);
if (!ok)
return false;
- int parent_id = qstrtoll(ptr, const_cast<const char **>(&ptr), 10, &ok);
+ int parent_id = qstrntoll(ptr, stop - ptr, const_cast<const char **>(&ptr), 10, &ok);
Q_UNUSED(parent_id);
if (!ok)
return false;
- int rdevmajor = qstrtoll(ptr, const_cast<const char **>(&ptr), 10, &ok);
+ int rdevmajor = qstrntoll(ptr, stop - ptr, const_cast<const char **>(&ptr), 10, &ok);
if (!ok)
return false;
if (*ptr != ':')
return false;
- int rdevminor = qstrtoll(ptr + 1, const_cast<const char **>(&ptr), 10, &ok);
+ int rdevminor = qstrntoll(ptr + 1, stop - ptr - 1, const_cast<const char **>(&ptr), 10, &ok);
if (!ok)
return false;
mnt.rdev = makedev(rdevmajor, rdevminor);