picexif: fix buffer overflow
[enigma2.git] / lib / service / service.cpp
index 7721fed7adaaeffb4282d40699918db8064aa412..8c674c5e2daeaf883cbab2fe0d55a73dd65dfd5c 100644 (file)
@@ -41,8 +41,8 @@ static std::string decode(const std::string s)
                        i += 2;
                        if (i >= len)
                                break;
-                       char s[3] = {s[i - 1], s[i], 0};
-                       unsigned char r = strtoul(s, 0, 0x10);
+                       char t[3] = {s[i - 1], s[i], 0};
+                       unsigned char r = strtoul(t, 0, 0x10);
                        if (r)
                                res += r;
                }
@@ -201,6 +201,25 @@ RESULT eServiceCenter::removeServiceFactory(int id)
        return 0;
 }
 
+RESULT eServiceCenter::addFactoryExtension(int id, const char *extension)
+{
+       std::map<int, std::list<std::string> >::iterator it = extensions.find(id);
+       if (it == extensions.end())
+               return -1;
+       it->second.push_back(extension);
+       return 0;
+}
+
+RESULT eServiceCenter::removeFactoryExtension(int id, const char *extension)
+{
+       std::map<int, std::list<std::string> >::iterator it = extensions.find(id);
+       if (it == extensions.end())
+               return -1;
+       it->second.remove(extension);
+       return 0;
+}
+
+
 int eServiceCenter::getServiceTypeForExtension(const char *str)
 {
        for (std::map<int, std::list<std::string> >::iterator sit(extensions.begin()); sit != extensions.end(); ++sit)
@@ -239,7 +258,7 @@ int iStaticServiceInformation::getLength(const eServiceReference &ref)
        return -1;
 }
 
-int iStaticServiceInformation::isPlayable(const eServiceReference &ref, const eServiceReference &ignore)
+int iStaticServiceInformation::isPlayable(const eServiceReference &ref, const eServiceReference &ignore, bool simulate)
 {
        return 0;
 }