summaryrefslogtreecommitdiffabout
authorMichael Krelin <hacker@klever.net>2011-01-12 20:41:19 (UTC)
committer Michael Krelin <hacker@klever.net>2011-01-12 20:41:19 (UTC)
commit824440e52ce8ddf1c45487d20d8996d08d0f96b5 (patch) (side-by-side diff)
tree36c48bea8deeccaccd181c3ecc08b452908c9ee9
parentc34fa95284928944bdd1b72aba164767257dd46f (diff)
downloadlibopkele-824440e52ce8ddf1c45487d20d8996d08d0f96b5.zip
libopkele-824440e52ce8ddf1c45487d20d8996d08d0f96b5.tar.gz
libopkele-824440e52ce8ddf1c45487d20d8996d08d0f96b5.tar.bz2
fix uninitialized pointer in discovery
it's not the most brilliant idea to pass the uninitialized structure and dereference the pointer member later on. Signed-off-by: Michael Krelin <hacker@klever.net>
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--lib/discovery.cc2
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/discovery.cc b/lib/discovery.cc
index b4ed3b6..5585e12 100644
--- a/lib/discovery.cc
+++ b/lib/discovery.cc
@@ -99,49 +99,49 @@ namespace opkele {
idigger_t()
: util::curl_t(easy_init()),
util::expat_t(0),
xri_proxy(XRI_PROXY_URL) {
CURLcode r;
(r=misc_sets())
|| (r=set_write())
|| (r=set_header())
;
if(r)
throw exception_curl(OPKELE_CP_ "failed to set curly options",r);
}
~idigger_t() throw() { }
void yadiscover(endpoint_discovery_iterator oi,const string& yurl,const char **types,bool redirs) {
idiscovery_t idis;
idis.xri_identity = false;
discover_at(idis,yurl,xmode_html|xmode_xrd|(redirs?0:xmode_noredirs));
if(!xrds_location.empty()) {
idis.clear();
discover_at(idis,xrds_location,xmode_xrd);
}
idis.normalized_id = idis.canonicalized_id = yurl;
- service_type_t st;
+ service_type_t st = { 0, 0 };
for(st.uri=*types;*types;st.uri=*(++types))
queue_endpoints(oi,idis,&st);
}
string discover(endpoint_discovery_iterator& oi,const string& identity) {
string rv;
idiscovery_t idis;
string::size_type fsc = identity.find_first_not_of(data::_whitespace_chars);
if(fsc==string::npos)
throw bad_input(OPKELE_CP_ "whitespace-only identity");
string::size_type lsc = identity.find_last_not_of(data::_whitespace_chars);
assert(lsc!=string::npos);
if(!strncasecmp(identity.c_str()+fsc,"xri://",sizeof("xri://")-1))
fsc += sizeof("xri://")-1;
if((fsc+1)>=lsc)
throw bad_input(OPKELE_CP_ "not a character of importance in identity");
string id(identity,fsc,lsc-fsc+1);
idis.clear();
if(strchr(data::_iname_leaders,id[0])) {
/* TODO: further normalize xri identity? Like folding case
* or whatever... */
rv = id;
set<string> cids;
for(const struct service_type_t *st=op_service_types;