aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-02-20 14:44:38 +0000
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-02-20 14:44:38 +0000
commit2dc80922a3f96b46b95bf235ea05cf19effa7d3e (patch)
tree199503a9bd52ca185dff85168b2db423dc13732b
parentf61e4ec73535adad77e444b60090f101b2a19b05 (diff)
downloadenigma2-2dc80922a3f96b46b95bf235ea05cf19effa7d3e.tar.gz
enigma2-2dc80922a3f96b46b95bf235ea05cf19effa7d3e.zip
set type of servicereference to idInvalid when string parse not possible
-rw-r--r--lib/service/service.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/service/service.cpp b/lib/service/service.cpp
index a490c3d7..d079965b 100644
--- a/lib/service/service.cpp
+++ b/lib/service/service.cpp
@@ -9,11 +9,14 @@ eServiceReference::eServiceReference(const std::string &string)
const char *c=string.c_str();
int pathl=0;
- if ( sscanf(c, "%d:%d:%x:%x:%x:%x:%x:%x:%x:%x:%n", &type, &flags, &data[0], &data[1], &data[2], &data[3], &data[4], &data[5], &data[6], &data[7], &pathl) < 8 )
+ if (!string.length())
+ type = idInvalid;
+ else if ( sscanf(c, "%d:%d:%x:%x:%x:%x:%x:%x:%x:%x:%n", &type, &flags, &data[0], &data[1], &data[2], &data[3], &data[4], &data[5], &data[6], &data[7], &pathl) < 8 )
{
memset( data, 0, sizeof(data) );
eDebug("find old format eServiceReference string");
- sscanf(c, "%d:%d:%x:%x:%x:%x:%n", &type, &flags, &data[0], &data[1], &data[2], &data[3], &pathl);
+ if ( sscanf(c, "%d:%d:%x:%x:%x:%x:%n", &type, &flags, &data[0], &data[1], &data[2], &data[3], &pathl) < 2 )
+ type = idInvalid;
}
if (pathl)