]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/tagfile.cc
policy: Be more strict about parsing pin files, and document prio 0
[apt.git] / apt-pkg / tagfile.cc
index 253b1b7a33d6ab58022cdaa113d09aff03c1bebf..8acecd735f9da90642a3f2a29e0b3766c5295f97 100644 (file)
@@ -533,9 +533,16 @@ signed int pkgTagSection::FindI(const char *Tag,signed long Default) const
       return Default;
    strncpy(S,Start,Stop-Start);
    S[Stop - Start] = 0;
-   
+
+   errno = 0;
    char *End;
    signed long Result = strtol(S,&End,10);
+   if (errno == ERANGE)
+      _error->Errno("strtol", _("Cannot convert %s to integer"), S);
+   if (Result < std::numeric_limits<int>::min() || Result > std::numeric_limits<int>::max()) {
+      errno = ERANGE;
+      _error->Errno("", _("Cannot convert %s to integer"), S);
+   }
    if (S == End)
       return Default;
    return Result;