]> git.saurik.com Git - apt.git/commitdiff
GetSrvRecords: Make thread-safe
authorJulian Andres Klode <jak@debian.org>
Fri, 23 Oct 2015 18:31:12 +0000 (20:31 +0200)
committerJulian Andres Klode <jak@debian.org>
Fri, 30 Oct 2015 13:20:09 +0000 (14:20 +0100)
Gbp-Dch: ignore

apt-pkg/contrib/srvrec.cc

index 837f2c84ea28b1d4fbea19d42f0e6edae3216575..9af2826533ab5373c1183510d49f8a5a1d3511dc 100644 (file)
 bool GetSrvRecords(std::string host, int port, std::vector<SrvRec> &Result)
 {
    std::string target;
-   struct servent *s_ent = getservbyport(htons(port), "tcp");
-   if (s_ent == NULL)
+   int res;
+   struct servent s_ent_buf;
+   struct servent *s_ent = nullptr;
+   std::vector<char> buf(1024);
+
+   res = getservbyport_r(htons(port), "tcp", &s_ent_buf, buf.data(), buf.size(), &s_ent);
+   if (res != 0 || s_ent == nullptr)
       return false;
 
    strprintf(target, "_%s._tcp.%s", s_ent->s_name, host.c_str());