--- libupnp4-1.8.0~svn20100507.orig/debian/libupnp4.symbols +++ libupnp4-1.8.0~svn20100507/debian/libupnp4.symbols @@ -0,0 +1,463 @@ +libixml4.so.2 libupnp4 #MINVER# + ixmlAttr_free@Base 1.4.3 + ixmlAttr_init@Base 1.4.3 + ixmlCDATASection_free@Base 1.4.3 + ixmlCDATASection_init@Base 1.4.3 + ixmlCloneDOMString@Base 1.4.3 + ixmlDocument_createAttribute@Base 1.4.3 + ixmlDocument_createAttributeEx@Base 1.4.3 + ixmlDocument_createAttributeNS@Base 1.4.3 + ixmlDocument_createAttributeNSEx@Base 1.4.3 + ixmlDocument_createCDATASection@Base 1.4.3 + ixmlDocument_createCDATASectionEx@Base 1.4.3 + ixmlDocument_createDocument@Base 1.4.3 + ixmlDocument_createDocumentEx@Base 1.4.3 + ixmlDocument_createElement@Base 1.4.3 + ixmlDocument_createElementEx@Base 1.4.3 + ixmlDocument_createElementNS@Base 1.4.3 + ixmlDocument_createElementNSEx@Base 1.4.3 + ixmlDocument_createTextNode@Base 1.4.3 + ixmlDocument_createTextNodeEx@Base 1.4.3 + ixmlDocument_free@Base 1.4.3 + ixmlDocument_getElementById@Base 1.4.3 + ixmlDocument_getElementsByTagName@Base 1.4.3 + ixmlDocument_getElementsByTagNameNS@Base 1.4.3 + ixmlDocument_importNode@Base 1.4.3 + ixmlDocument_init@Base 1.4.3 +#MISSING: 1:1.6.6+svn20080814# ixmlDocument_setOwnerDocument@Base 1.4.3 + ixmlDocumenttoString@Base 1.4.3 +#MISSING: 1:1.6.6+svn20080814# ixmlDomTreetoString@Base 1.4.3 +#MISSING: 1:1.6.6+svn20080814# ixmlElement_findAttributeNode@Base 1.4.3 + ixmlElement_free@Base 1.4.3 + ixmlElement_getAttribute@Base 1.4.3 + ixmlElement_getAttributeNS@Base 1.4.3 + ixmlElement_getAttributeNode@Base 1.4.3 + ixmlElement_getAttributeNodeNS@Base 1.4.3 + ixmlElement_getElementsByTagName@Base 1.4.3 + ixmlElement_getElementsByTagNameNS@Base 1.4.3 + ixmlElement_getTagName@Base 1.4.3 + ixmlElement_hasAttribute@Base 1.4.3 + ixmlElement_hasAttributeNS@Base 1.4.3 + ixmlElement_init@Base 1.4.3 + ixmlElement_removeAttribute@Base 1.4.3 + ixmlElement_removeAttributeNS@Base 1.4.3 + ixmlElement_removeAttributeNode@Base 1.4.3 + ixmlElement_setAttribute@Base 1.4.3 + ixmlElement_setAttributeNS@Base 1.4.3 + ixmlElement_setAttributeNode@Base 1.4.3 + ixmlElement_setAttributeNodeNS@Base 1.4.3 + ixmlElement_setTagName@Base 1.4.3 + ixmlFreeDOMString@Base 1.4.3 + ixmlLoadDocument@Base 1.4.3 + ixmlLoadDocumentEx@Base 1.4.3 + ixmlNamedNodeMap_addToNamedNodeMap@Base 1.4.3 + ixmlNamedNodeMap_free@Base 1.4.3 +#MISSING: 1:1.6.6+svn20080814# ixmlNamedNodeMap_getItemNumber@Base 1.4.3 + ixmlNamedNodeMap_getLength@Base 1.4.3 + ixmlNamedNodeMap_getNamedItem@Base 1.4.3 + ixmlNamedNodeMap_init@Base 1.4.3 + ixmlNamedNodeMap_item@Base 1.4.3 + ixmlNodeList_addToNodeList@Base 1.4.3 + ixmlNodeList_free@Base 1.4.3 + ixmlNodeList_init@Base 1.4.3 + ixmlNodeList_item@Base 1.4.3 + ixmlNodeList_length@Base 1.4.3 +#MISSING: 1:1.6.6+svn20080814# ixmlNode_allowChildren@Base 1.4.3 + ixmlNode_appendChild@Base 1.4.3 +#MISSING: 1:1.6.6+svn20080814# ixmlNode_cloneAttr@Base 1.4.3 +#MISSING: 1:1.6.6+svn20080814# ixmlNode_cloneAttrDirect@Base 1.4.3 +#MISSING: 1:1.6.6+svn20080814# ixmlNode_cloneCDATASect@Base 1.4.3 +#MISSING: 1:1.6.6+svn20080814# ixmlNode_cloneDoc@Base 1.4.3 +#MISSING: 1:1.6.6+svn20080814# ixmlNode_cloneElement@Base 1.4.3 + ixmlNode_cloneNode@Base 1.4.3 +#MISSING: 1:1.6.6+svn20080814# ixmlNode_cloneNodeTree@Base 1.4.3 +#MISSING: 1:1.6.6+svn20080814# ixmlNode_cloneNodeTreeRecursive@Base 1.4.3 +#MISSING: 1:1.6.6+svn20080814# ixmlNode_cloneTextNode@Base 1.4.3 + ixmlNode_compare@Base 1.4.3 + ixmlNode_free@Base 1.4.3 +#MISSING: 1:1.6.6+svn20080814# ixmlNode_freeSingleNode@Base 1.4.3 + ixmlNode_getAttributes@Base 1.4.3 + ixmlNode_getChildNodes@Base 1.4.3 + ixmlNode_getElementsByTagName@Base 1.4.3 + ixmlNode_getElementsByTagNameNS@Base 1.4.3 +#MISSING: 1:1.6.6+svn20080814# ixmlNode_getElementsByTagNameNSRecursive@Base 1.4.3 +#MISSING: 1:1.6.6+svn20080814# ixmlNode_getElementsByTagNameRecursive@Base 1.4.3 + ixmlNode_getFirstChild@Base 1.4.3 + ixmlNode_getLastChild@Base 1.4.3 + ixmlNode_getLocalName@Base 1.4.3 + ixmlNode_getNamespaceURI@Base 1.4.3 + ixmlNode_getNextSibling@Base 1.4.3 + ixmlNode_getNodeName@Base 1.4.3 + ixmlNode_getNodeType@Base 1.4.3 + ixmlNode_getNodeValue@Base 1.4.3 + ixmlNode_getOwnerDocument@Base 1.4.3 + ixmlNode_getParentNode@Base 1.4.3 + ixmlNode_getPrefix@Base 1.4.3 + ixmlNode_getPreviousSibling@Base 1.4.3 + ixmlNode_hasAttributes@Base 1.4.3 + ixmlNode_hasChildNodes@Base 1.4.3 + ixmlNode_init@Base 1.4.3 + ixmlNode_insertBefore@Base 1.4.3 +#MISSING: 1:1.6.6+svn20080814# ixmlNode_isAncestor@Base 1.4.3 +#MISSING: 1:1.6.6+svn20080814# ixmlNode_isParent@Base 1.4.3 + ixmlNode_removeChild@Base 1.4.3 + ixmlNode_replaceChild@Base 1.4.3 +#MISSING: 1:1.6.6+svn20080814# ixmlNode_setLocalName@Base 1.4.3 +#MISSING: 1:1.6.6+svn20080814# ixmlNode_setNamespaceURI@Base 1.4.3 + ixmlNode_setNodeName@Base 1.4.3 + ixmlNode_setNodeProperties@Base 1.4.3 + ixmlNode_setNodeValue@Base 1.4.3 +#MISSING: 1:1.6.6+svn20080814# ixmlNode_setPrefix@Base 1.4.3 +#MISSING: 1:1.6.6+svn20080814# ixmlNode_setSiblingNodesParent@Base 1.4.3 + ixmlNodetoString@Base 1.4.3 + ixmlParseBuffer@Base 1.4.3 + ixmlParseBufferEx@Base 1.4.3 + ixmlPrintDocument@Base 1.4.3 +#MISSING: 1:1.6.6+svn20080814# ixmlPrintDomTree@Base 1.4.3 +#MISSING: 1:1.6.6+svn20080814# ixmlPrintDomTreeRecursive@Base 1.4.3 + ixmlPrintNode@Base 1.4.3 + ixmlRelaxParser@Base 1.4.3 + ixml_membuf_append@Base 1.4.3 + ixml_membuf_append_str@Base 1.4.3 + ixml_membuf_assign@Base 1.4.3 + ixml_membuf_assign_str@Base 1.4.3 + ixml_membuf_destroy@Base 1.4.3 + ixml_membuf_init@Base 1.4.3 + ixml_membuf_insert@Base 1.4.3 +libthreadutil4.so.3 libupnp4 #MINVER# + FreeListAlloc@Base 1.4.3 + FreeListDestroy@Base 1.4.3 + FreeListFree@Base 1.4.3 + FreeListInit@Base 1.4.3 + ListAddAfter@Base 1.4.3 + ListAddBefore@Base 1.4.3 + ListAddHead@Base 1.4.3 + ListAddTail@Base 1.4.3 + ListDelNode@Base 1.4.3 + ListDestroy@Base 1.4.3 + ListFind@Base 1.4.3 + ListHead@Base 1.4.3 + ListInit@Base 1.4.3 + ListNext@Base 1.4.3 + ListPrev@Base 1.4.3 + ListSize@Base 1.4.3 + ListTail@Base 1.4.3 + TPAttrInit@Base 1.4.3 + TPAttrSetIdleTime@Base 1.4.3 + TPAttrSetJobsPerThread@Base 1.4.3 + TPAttrSetMaxJobsTotal@Base 1.4.3 + TPAttrSetMaxThreads@Base 1.4.3 + TPAttrSetMinThreads@Base 1.4.3 + TPAttrSetSchedPolicy@Base 1.4.3 + TPAttrSetStarvationTime@Base 1.4.3 + TPJobInit@Base 1.4.3 + TPJobSetFreeFunction@Base 1.4.3 + TPJobSetPriority@Base 1.4.3 + ThreadPoolAdd@Base 1.4.3 + ThreadPoolAddPersistent@Base 1.4.3 + ThreadPoolGetAttr@Base 1.4.3 + ThreadPoolGetStats@Base 1.4.3 + ThreadPoolInit@Base 1.4.3 + ThreadPoolPrintStats@Base 1.4.3 + ThreadPoolRemove@Base 1.4.3 + ThreadPoolSetAttr@Base 1.4.3 + ThreadPoolShutdown@Base 1.4.3 + TimerThreadInit@Base 1.4.3 + TimerThreadRemove@Base 1.4.3 + TimerThreadSchedule@Base 1.4.3 + TimerThreadShutdown@Base 1.4.3 +#MISSING: 1.6.5# iasnprintf@Base 1.4.3 +#MISSING: 1.6.5# iasnprintfFree@Base 1.4.3 +libupnp4.so.4 libupnp4 #MINVER# + UpnpAcceptSubscription@Base 1.4.3 + UpnpAcceptSubscriptionExt@Base 1.4.3 + UpnpActionComplete_assign@Base 1.8.0~cvs20080628 + UpnpActionComplete_delete@Base 1.8.0~cvs20080628 + UpnpActionComplete_dup@Base 1.8.0~cvs20080628 + UpnpActionComplete_get_ActionRequest@Base 1.8.0~cvs20080628 + UpnpActionComplete_get_ActionResult@Base 1.8.0~cvs20080628 + UpnpActionComplete_get_CtrlUrl@Base 1.8.0~cvs20080628 + UpnpActionComplete_get_CtrlUrl_cstr@Base 1.8.0~svn20100401 + UpnpActionComplete_get_ErrCode@Base 1.8.0~cvs20080628 + UpnpActionComplete_new@Base 1.8.0~cvs20080628 + UpnpActionComplete_set_ActionRequest@Base 1.8.0~cvs20080628 + UpnpActionComplete_set_ActionResult@Base 1.8.0~cvs20080628 + UpnpActionComplete_set_CtrlUrl@Base 1.8.0~cvs20080628 + UpnpActionComplete_set_ErrCode@Base 1.8.0~cvs20080628 + UpnpActionComplete_strcpy_CtrlUrl@Base 1.8.0~cvs20080628 + UpnpActionRequest_assign@Base 1.8.0~cvs20080628 + UpnpActionRequest_delete@Base 1.8.0~cvs20080628 + UpnpActionRequest_dup@Base 1.8.0~cvs20080628 + UpnpActionRequest_get_ActionName@Base 1.8.0~cvs20080628 + UpnpActionRequest_get_ActionName_cstr@Base 1.8.0~svn20100401 + UpnpActionRequest_get_ActionRequest@Base 1.8.0~cvs20080628 + UpnpActionRequest_get_ActionResult@Base 1.8.0~cvs20080628 + UpnpActionRequest_get_CtrlPtIPAddr@Base 1.8.0~cvs20080628 + UpnpActionRequest_get_DevUDN@Base 1.8.0~cvs20080628 + UpnpActionRequest_get_DevUDN_cstr@Base 1.8.0~svn20100401 + UpnpActionRequest_get_ErrCode@Base 1.8.0~cvs20080628 + UpnpActionRequest_get_ErrStr@Base 1.8.0~cvs20080628 + UpnpActionRequest_get_ErrStr_cstr@Base 1.8.0~svn20100401 + UpnpActionRequest_get_ServiceID@Base 1.8.0~cvs20080628 + UpnpActionRequest_get_ServiceID_cstr@Base 1.8.0~svn20100401 + UpnpActionRequest_get_SoapHeader@Base 1.8.0~cvs20080628 + UpnpActionRequest_get_Socket@Base 1.8.0~cvs20080628 + UpnpActionRequest_new@Base 1.8.0~cvs20080628 + UpnpActionRequest_set_ActionName@Base 1.8.0~cvs20080628 + UpnpActionRequest_set_ActionRequest@Base 1.8.0~cvs20080628 + UpnpActionRequest_set_ActionResult@Base 1.8.0~cvs20080628 + UpnpActionRequest_set_CtrlPtIPAddr@Base 1.8.0~cvs20080628 + UpnpActionRequest_set_DevUDN@Base 1.8.0~cvs20080628 + UpnpActionRequest_set_ErrCode@Base 1.8.0~cvs20080628 + UpnpActionRequest_set_ErrStr@Base 1.8.0~cvs20080628 + UpnpActionRequest_set_ServiceID@Base 1.8.0~cvs20080628 + UpnpActionRequest_set_SoapHeader@Base 1.8.0~cvs20080628 + UpnpActionRequest_set_Socket@Base 1.8.0~cvs20080628 + UpnpActionRequest_strcpy_ActionName@Base 1.8.0~cvs20080628 + UpnpActionRequest_strcpy_ErrStr@Base 1.8.0~cvs20080628 + UpnpAddToAction@Base 1.4.3 + UpnpAddToActionResponse@Base 1.4.3 + UpnpAddToPropertySet@Base 1.4.3 + UpnpAddVirtualDir@Base 1.4.3 + UpnpCancelHttpGet@Base 1.4.3 + UpnpCloseHttpGet@Base 1.4.3 + UpnpCloseHttpPost@Base 1.4.3 + UpnpCloseLog@Base 1.8.0~svn20100401 + UpnpCreatePropertySet@Base 1.4.3 + UpnpDiscovery_assign@Base 1.8.0~cvs20080628 + UpnpDiscovery_delete@Base 1.8.0~cvs20080628 + UpnpDiscovery_dup@Base 1.8.0~cvs20080628 + UpnpDiscovery_get_Date@Base 1.8.0~cvs20080628 + UpnpDiscovery_get_Date_cstr@Base 1.8.0~svn20100401 + UpnpDiscovery_get_DestAddr@Base 1.8.0~cvs20080628 + UpnpDiscovery_get_DeviceID@Base 1.8.0~cvs20080628 + UpnpDiscovery_get_DeviceID_cstr@Base 1.8.0~svn20100401 + UpnpDiscovery_get_DeviceType@Base 1.8.0~cvs20080628 + UpnpDiscovery_get_DeviceType_cstr@Base 1.8.0~svn20100401 + UpnpDiscovery_get_ErrCode@Base 1.8.0~cvs20080628 + UpnpDiscovery_get_Expires@Base 1.8.0~cvs20080628 + UpnpDiscovery_get_Ext@Base 1.8.0~cvs20080628 + UpnpDiscovery_get_Ext_cstr@Base 1.8.0~svn20100401 + UpnpDiscovery_get_Location@Base 1.8.0~cvs20080628 + UpnpDiscovery_get_Location_cstr@Base 1.8.0~svn20100401 + UpnpDiscovery_get_Os@Base 1.8.0~cvs20080628 + UpnpDiscovery_get_Os_cstr@Base 1.8.0~svn20100401 + UpnpDiscovery_get_ServiceType@Base 1.8.0~cvs20080628 + UpnpDiscovery_get_ServiceType_cstr@Base 1.8.0~svn20100401 + UpnpDiscovery_get_ServiceVer@Base 1.8.0~cvs20080628 + UpnpDiscovery_get_ServiceVer_cstr@Base 1.8.0~svn20100401 + UpnpDiscovery_new@Base 1.8.0~cvs20080628 + UpnpDiscovery_set_Date@Base 1.8.0~cvs20080628 + UpnpDiscovery_set_DestAddr@Base 1.8.0~cvs20080628 + UpnpDiscovery_set_DeviceID@Base 1.8.0~cvs20080628 + UpnpDiscovery_set_DeviceType@Base 1.8.0~cvs20080628 + UpnpDiscovery_set_ErrCode@Base 1.8.0~cvs20080628 + UpnpDiscovery_set_Expires@Base 1.8.0~cvs20080628 + UpnpDiscovery_set_Ext@Base 1.8.0~cvs20080628 + UpnpDiscovery_set_Location@Base 1.8.0~cvs20080628 + UpnpDiscovery_set_Os@Base 1.8.0~cvs20080628 + UpnpDiscovery_set_ServiceType@Base 1.8.0~cvs20080628 + UpnpDiscovery_set_ServiceVer@Base 1.8.0~cvs20080628 + UpnpDiscovery_strcpy_Date@Base 1.8.0~cvs20080628 + UpnpDiscovery_strcpy_DeviceID@Base 1.8.0~cvs20080628 + UpnpDiscovery_strcpy_DeviceType@Base 1.8.0~cvs20080628 + UpnpDiscovery_strcpy_Ext@Base 1.8.0~cvs20080628 + UpnpDiscovery_strcpy_Location@Base 1.8.0~cvs20080628 + UpnpDiscovery_strcpy_Os@Base 1.8.0~cvs20080628 + UpnpDiscovery_strcpy_ServiceType@Base 1.8.0~cvs20080628 + UpnpDiscovery_strcpy_ServiceVer@Base 1.8.0~cvs20080628 + UpnpDiscovery_strncpy_Ext@Base 1.8.0~cvs20080628 + UpnpDiscovery_strncpy_Location@Base 1.8.0~cvs20080628 + UpnpDiscovery_strncpy_Os@Base 1.8.0~cvs20080628 + UpnpDisplayFileAndLine@Base 1.8.0~svn20100401 + UpnpDownloadUrlItem@Base 1.4.3 + UpnpDownloadXmlDoc@Base 1.4.3 + UpnpEnableWebserver@Base 1.4.3 + UpnpEventSubscribe_assign@Base 1.8.0~cvs20080628 + UpnpEventSubscribe_delete@Base 1.8.0~cvs20080628 + UpnpEventSubscribe_dup@Base 1.8.0~cvs20080628 + UpnpEventSubscribe_get_ErrCode@Base 1.8.0~cvs20080628 + UpnpEventSubscribe_get_PublisherUrl@Base 1.8.0~cvs20080628 + UpnpEventSubscribe_get_PublisherUrl_cstr@Base 1.8.0~svn20100401 + UpnpEventSubscribe_get_SID@Base 1.8.0~cvs20080628 + UpnpEventSubscribe_get_SID_cstr@Base 1.8.0~svn20100401 + UpnpEventSubscribe_get_TimeOut@Base 1.8.0~cvs20080628 + UpnpEventSubscribe_new@Base 1.8.0~cvs20080628 + UpnpEventSubscribe_set_ErrCode@Base 1.8.0~cvs20080628 + UpnpEventSubscribe_set_PublisherUrl@Base 1.8.0~cvs20080628 + UpnpEventSubscribe_set_SID@Base 1.8.0~cvs20080628 + UpnpEventSubscribe_set_TimeOut@Base 1.8.0~cvs20080628 + UpnpEventSubscribe_strcpy_PublisherUrl@Base 1.8.0~cvs20080628 + UpnpEventSubscribe_strcpy_SID@Base 1.8.0~cvs20080628 + UpnpEvent_assign@Base 1.8.0~cvs20080628 + UpnpEvent_delete@Base 1.8.0~cvs20080628 + UpnpEvent_dup@Base 1.8.0~cvs20080628 + UpnpEvent_get_ChangedVariables@Base 1.8.0~cvs20080628 + UpnpEvent_get_EventKey@Base 1.8.0~cvs20080628 + UpnpEvent_get_SID@Base 1.8.0~cvs20080628 + UpnpEvent_get_SID_cstr@Base 1.8.0~svn20100401 + UpnpEvent_new@Base 1.8.0~cvs20080628 + UpnpEvent_set_ChangedVariables@Base 1.8.0~cvs20080628 + UpnpEvent_set_EventKey@Base 1.8.0~cvs20080628 + UpnpEvent_set_SID@Base 1.8.0~cvs20080628 + UpnpFileInfo_assign@Base 1.8.0~cvs20080628 + UpnpFileInfo_delete@Base 1.8.0~cvs20080628 + UpnpFileInfo_dup@Base 1.8.0~cvs20080628 + UpnpFileInfo_get_ContentType@Base 1.8.0~cvs20080628 + UpnpFileInfo_get_ContentType_cstr@Base 1.8.0~svn20100401 + UpnpFileInfo_get_ExtraHeaders@Base 1.8.0~cvs20080628 + UpnpFileInfo_get_ExtraHeaders_cstr@Base 1.8.0~svn20100401 + UpnpFileInfo_get_FileLength@Base 1.8.0~cvs20080628 + UpnpFileInfo_get_IsDirectory@Base 1.8.0~cvs20080628 + UpnpFileInfo_get_IsReadable@Base 1.8.0~cvs20080628 + UpnpFileInfo_get_LastModified@Base 1.8.0~cvs20080628 + UpnpFileInfo_new@Base 1.8.0~cvs20080628 + UpnpFileInfo_set_ContentType@Base 1.8.0~cvs20080628 + UpnpFileInfo_set_ExtraHeaders@Base 1.8.0~cvs20080628 + UpnpFileInfo_set_FileLength@Base 1.8.0~cvs20080628 + UpnpFileInfo_set_IsDirectory@Base 1.8.0~cvs20080628 + UpnpFileInfo_set_IsReadable@Base 1.8.0~cvs20080628 + UpnpFileInfo_set_LastModified@Base 1.8.0~cvs20080628 + UpnpFinish@Base 1.4.3 +#MISSING: 1:1.6.6+svn20080814# UpnpFree@Base 1.4.3 +#MISSING: 1:1.6.6# UpnpFreeActionCompleteEvent@Base 1.6.5 +#MISSING: 1:1.6.6# UpnpFreeSubscribeEvent@Base 1.6.5 + UpnpGetDebugFile@Base 1.8.0~svn20100401 + UpnpGetErrorMessage@Base 1.4.3 + UpnpGetIfInfo@Base 1.8.0~cvs20080628 + UpnpGetServerIp6Address@Base 1.8.0~cvs20080628 + UpnpGetServerIpAddress@Base 1.4.3 + UpnpGetServerPort6@Base 1.8.0~cvs20080628 + UpnpGetServerPort@Base 1.4.3 + UpnpGetServiceVarStatus@Base 1.4.3 + UpnpGetServiceVarStatusAsync@Base 1.4.3 + UpnpHttpGetProgress@Base 1.4.3 + UpnpInit2@Base 1.8.0~cvs20080628 + UpnpInit@Base 1.4.3 + UpnpInitLog@Base 1.8.0~svn20100401 +#MISSING: 1.8.0~svn20100401# UpnpInitMutexes@Base 1.8.0~cvs20080628 +#MISSING: 1.8.0~svn20100401# UpnpInitPreamble@Base 1.8.0~cvs20080628 +#MISSING: 1.8.0~svn20100401# UpnpInitStartServers@Base 1.8.0~cvs20080628 +#MISSING: 1.8.0~svn20100401# UpnpInitThreadPools@Base 1.8.0~cvs20080628 + UpnpIsWebserverEnabled@Base 1.4.3 + UpnpMakeAction@Base 1.4.3 + UpnpMakeActionResponse@Base 1.4.3 + UpnpNotify@Base 1.4.3 + UpnpNotifyExt@Base 1.4.3 + UpnpOpenHttpGet@Base 1.4.3 + UpnpOpenHttpGetEx@Base 1.4.3 + UpnpOpenHttpGetProxy@Base 1.4.3 + UpnpOpenHttpPost@Base 1.4.3 + UpnpPrintf@Base 1.8.0~svn20100401 + UpnpReadHttpGet@Base 1.4.3 + UpnpRegisterClient@Base 1.4.3 + UpnpRegisterRootDevice2@Base 1.4.3 + UpnpRegisterRootDevice3@Base 1.8.0~cvs20080628 + UpnpRegisterRootDevice@Base 1.4.3 + UpnpRemoveAllVirtualDirs@Base 1.4.3 + UpnpRemoveVirtualDir@Base 1.4.3 + UpnpRenewSubscription@Base 1.4.3 + UpnpRenewSubscriptionAsync@Base 1.4.3 + UpnpResolveURL@Base 1.4.3 + UpnpSdkClientRegistered@Base 1.4.3 +#MISSING: 1.8.0~cvs20080628# UpnpSdkDeviceRegistered@Base 1.4.3 + UpnpSdkDeviceRegisteredV4@Base 1.8.0~cvs20080628 + UpnpSdkDeviceregisteredV6@Base 1.8.0~cvs20080628 + UpnpSdkInit@Base 1.4.3 + UpnpSearchAsync@Base 1.4.3 + UpnpSendAction@Base 1.4.3 + UpnpSendActionAsync@Base 1.4.3 + UpnpSendActionEx@Base 1.4.3 + UpnpSendActionExAsync@Base 1.4.3 + UpnpSendAdvertisement@Base 1.4.3 + UpnpSetContentLength@Base 1.4.3 + UpnpSetLogFileNames@Base 1.8.0~svn20100401 + UpnpSetLogLevel@Base 1.8.0~svn20100401 + UpnpSetMaxContentLength@Base 1.4.3 + UpnpSetMaxSubscriptionTimeOut@Base 1.4.3 + UpnpSetMaxSubscriptions@Base 1.4.3 +#MISSING: 1.8.0~cvs20080628# UpnpSetVirtualDirCallbacks@Base 1.4.3 + UpnpSetWebServerRootDir@Base 1.4.3 + UpnpStateVarComplete_assign@Base 1.8.0~cvs20080628 + UpnpStateVarComplete_delete@Base 1.8.0~cvs20080628 + UpnpStateVarComplete_dup@Base 1.8.0~cvs20080628 + UpnpStateVarComplete_get_CtrlUrl@Base 1.8.0~cvs20080628 + UpnpStateVarComplete_get_CtrlUrl_cstr@Base 1.8.0~svn20100401 + UpnpStateVarComplete_get_CurrentVal@Base 1.8.0~cvs20080628 + UpnpStateVarComplete_get_CurrentVal_cstr@Base 1.8.0~svn20100401 + UpnpStateVarComplete_get_ErrCode@Base 1.8.0~cvs20080628 + UpnpStateVarComplete_get_StateVarName@Base 1.8.0~cvs20080628 + UpnpStateVarComplete_get_StateVarName_cstr@Base 1.8.0~svn20100401 + UpnpStateVarComplete_new@Base 1.8.0~cvs20080628 + UpnpStateVarComplete_set_CtrlUrl@Base 1.8.0~cvs20080628 + UpnpStateVarComplete_set_CurrentVal@Base 1.8.0~cvs20080628 + UpnpStateVarComplete_set_ErrCode@Base 1.8.0~cvs20080628 + UpnpStateVarComplete_set_StateVarName@Base 1.8.0~cvs20080628 + UpnpStateVarComplete_strcpy_CtrlUrl@Base 1.8.0~cvs20080628 + UpnpStateVarComplete_strcpy_StateVarName@Base 1.8.0~cvs20080628 + UpnpStateVarRequest_assign@Base 1.8.0~cvs20080628 + UpnpStateVarRequest_delete@Base 1.8.0~cvs20080628 + UpnpStateVarRequest_dup@Base 1.8.0~cvs20080628 + UpnpStateVarRequest_get_CtrlPtIPAddr@Base 1.8.0~cvs20080628 + UpnpStateVarRequest_get_CurrentVal@Base 1.8.0~cvs20080628 + UpnpStateVarRequest_get_CurrentVal_cstr@Base 1.8.0~svn20100401 + UpnpStateVarRequest_get_DevUDN@Base 1.8.0~cvs20080628 + UpnpStateVarRequest_get_DevUDN_cstr@Base 1.8.0~svn20100401 + UpnpStateVarRequest_get_ErrCode@Base 1.8.0~cvs20080628 + UpnpStateVarRequest_get_ErrStr@Base 1.8.0~cvs20080628 + UpnpStateVarRequest_get_ErrStr_cstr@Base 1.8.0~svn20100401 + UpnpStateVarRequest_get_ServiceID@Base 1.8.0~cvs20080628 + UpnpStateVarRequest_get_ServiceID_cstr@Base 1.8.0~svn20100401 + UpnpStateVarRequest_get_Socket@Base 1.8.0~cvs20080628 + UpnpStateVarRequest_get_StateVarName@Base 1.8.0~cvs20080628 + UpnpStateVarRequest_get_StateVarName_cstr@Base 1.8.0~svn20100401 + UpnpStateVarRequest_new@Base 1.8.0~cvs20080628 + UpnpStateVarRequest_set_CtrlPtIPAddr@Base 1.8.0~cvs20080628 + UpnpStateVarRequest_set_CurrentVal@Base 1.8.0~cvs20080628 + UpnpStateVarRequest_set_DevUDN@Base 1.8.0~cvs20080628 + UpnpStateVarRequest_set_ErrCode@Base 1.8.0~cvs20080628 + UpnpStateVarRequest_set_ErrStr@Base 1.8.0~cvs20080628 + UpnpStateVarRequest_set_ServiceID@Base 1.8.0~cvs20080628 + UpnpStateVarRequest_set_Socket@Base 1.8.0~cvs20080628 + UpnpStateVarRequest_set_StateVarName@Base 1.8.0~cvs20080628 + UpnpStateVarRequest_strcpy_ErrStr@Base 1.8.0~cvs20080628 + UpnpStateVarRequest_strcpy_StateVarName@Base 1.8.0~cvs20080628 + UpnpString_assign@Base 1.8.0~cvs20080628 + UpnpString_clear@Base 1.8.0~cvs20080628 + UpnpString_delete@Base 1.8.0~cvs20080628 + UpnpString_dup@Base 1.8.0~cvs20080628 + UpnpString_get_Length@Base 1.8.0~cvs20080628 + UpnpString_get_String@Base 1.8.0~cvs20080628 + UpnpString_new@Base 1.8.0~cvs20080628 + UpnpString_set_String@Base 1.8.0~cvs20080628 + UpnpString_set_StringN@Base 1.8.0~cvs20080628 + UpnpSubscribe@Base 1.4.3 + UpnpSubscribeAsync@Base 1.4.3 + UpnpSubscriptionRequest_assign@Base 1.8.0~cvs20080628 + UpnpSubscriptionRequest_delete@Base 1.8.0~cvs20080628 + UpnpSubscriptionRequest_dup@Base 1.8.0~cvs20080628 + UpnpSubscriptionRequest_get_SID@Base 1.8.0~cvs20080628 + UpnpSubscriptionRequest_get_SID_cstr@Base 1.8.0~svn20100401 + UpnpSubscriptionRequest_get_ServiceId@Base 1.8.0~cvs20080628 + UpnpSubscriptionRequest_get_ServiceId_cstr@Base 1.8.0~svn20100401 + UpnpSubscriptionRequest_get_UDN@Base 1.8.0~cvs20080628 + UpnpSubscriptionRequest_get_UDN_cstr@Base 1.8.0~svn20100401 + UpnpSubscriptionRequest_new@Base 1.8.0~cvs20080628 + UpnpSubscriptionRequest_set_SID@Base 1.8.0~cvs20080628 + UpnpSubscriptionRequest_set_ServiceId@Base 1.8.0~cvs20080628 + UpnpSubscriptionRequest_set_UDN@Base 1.8.0~cvs20080628 + UpnpSubscriptionRequest_strcpy_SID@Base 1.8.0~cvs20080628 + UpnpSubscriptionRequest_strcpy_ServiceId@Base 1.8.0~cvs20080628 + UpnpSubscriptionRequest_strcpy_UDN@Base 1.8.0~cvs20080628 + UpnpThreadDistribution@Base 1.4.3 + UpnpUnRegisterClient@Base 1.4.3 + UpnpUnRegisterRootDevice@Base 1.4.3 + UpnpUnSubscribe@Base 1.4.3 + UpnpUnSubscribeAsync@Base 1.4.3 + UpnpVirtualDir_set_CloseCallback@Base 1.8.0~cvs20080628 + UpnpVirtualDir_set_GetInfoCallback@Base 1.8.0~cvs20080628 + UpnpVirtualDir_set_OpenCallback@Base 1.8.0~cvs20080628 + UpnpVirtualDir_set_ReadCallback@Base 1.8.0~cvs20080628 + UpnpVirtualDir_set_SeekCallback@Base 1.8.0~cvs20080628 + UpnpVirtualDir_set_WriteCallback@Base 1.8.0~cvs20080628 + UpnpWriteHttpPost@Base 1.4.3 --- libupnp4-1.8.0~svn20100507.orig/debian/compat +++ libupnp4-1.8.0~svn20100507/debian/compat @@ -0,0 +1 @@ +7 --- libupnp4-1.8.0~svn20100507.orig/debian/README.source +++ libupnp4-1.8.0~svn20100507/debian/README.source @@ -0,0 +1,5 @@ +This package uses quilt to manage all modifications to the upstream +source. Changes are stored in the source package as diffs in +debian/patches and applied during the build. + +See /usr/share/doc/quilt/README.source for a detailed explanation. --- libupnp4-1.8.0~svn20100507.orig/debian/libupnp4-doc.doc-base +++ libupnp4-1.8.0~svn20100507/debian/libupnp4-doc.doc-base @@ -0,0 +1,11 @@ +Document: libupnp4 +Title: Libupnp4: Portable SDK for UPnP Devices, version 1.8 +Abstract: The Portable SDK for UPnP Devices (libupnp) provides developers + with an API and open source code for building control points, devices, + and bridges that are compliant with Version 1.0 of the Universal Plug + and Play Device Architecture Specification. +Section: Programming + +Format: HTML +Index: /usr/share/doc/libupnp4-doc/html/index.html +Files: /usr/share/doc/libupnp4-doc/html/* --- libupnp4-1.8.0~svn20100507.orig/debian/libupnp4-dev.install +++ libupnp4-1.8.0~svn20100507/debian/libupnp4-dev.install @@ -0,0 +1,3 @@ +usr/lib/lib*.{a,so} +usr/lib/pkgconfig/libupnp.pc usr/lib/pkgconfig +usr/include/* --- libupnp4-1.8.0~svn20100507.orig/debian/watch +++ libupnp4-1.8.0~svn20100507/debian/watch @@ -0,0 +1,2 @@ +version=3 +http://sf.net/pupnp/libupnp-(\d.*)\.(?:tar.bz2|tar.gz|tar|tgz) --- libupnp4-1.8.0~svn20100507.orig/debian/control +++ libupnp4-1.8.0~svn20100507/debian/control @@ -0,0 +1,74 @@ +Source: libupnp4 +Section: net +Priority: extra +Homepage: http://pupnp.sourceforge.net/ +Maintainer: Ubuntu Developers +XSBC-Original-Maintainer: Nick Leverton +Build-Depends: debhelper (>= 7.0.50), quilt (>= 0.46-8~), + autotools-dev (>= 20100122.1~), autoconf, automake, libtool, doxygen, graphviz +Standards-Version: 3.8.4 + +Package: libupnp4 +Architecture: any +Section: libs +Depends: ${shlibs:Depends}, ${misc:Depends} +Conflicts: libupnp3 (<< 1.6.6-4~) +Description: Portable SDK for UPnP Devices, version 1.8 (shared libraries) + The Portable SDK for UPnP Devices (libupnp) provides developers with an + API and open source code for building control points, devices, and + bridges that are compliant with Version 1.0 of the Universal Plug and + Play Device Architecture Specification - see http://www.upnp.org/ for + specifications. + . + The libupnp4 package contains the runtime libraries for libupnp + version 1.8. + +Package: libupnp4-dev +Architecture: any +Section: libdevel +Depends: libupnp4 (= ${binary:Version}), ${misc:Depends} +Conflicts: libupnp3-dev, libupnp-dev (<< ${binary:Version}) +Suggests: libupnp4-doc +Description: Portable SDK for UPnP Devices, version 1.8 (development files) + The Portable SDK for UPnP Devices (libupnp) provides developers with an + API and open source code for building control points, devices, and + bridges that are compliant with Version 1.0 of the Universal Plug and + Play Device Architecture Specification - see http://www.upnp.org/ for + specifications. + . + The libupnp4-dev package contains the header files, documentation and + debug versions of libraries needed for development of programs using + libupnp version 1.8. + +Package: libupnp4-dbg +Architecture: any +Section: debug +Depends: libupnp4 (= ${binary:Version}), ${misc:Depends} +Conflicts: libupnp3-dbg (<< 1.6.6-4~) +Description: debugging symbols for libupnp4 + The Portable SDK for UPnP Devices (libupnp) provides developers with an + API and open source code for building control points, devices, and + bridges that are compliant with Version 1.0 of the Universal Plug and + Play Device Architecture Specification - see http://www.upnp.org/ for + specifications. + . + This package contains the debugging symbols associated with libupnp4. + They will automatically be used by gdb for debugging libupnp-related + issues. + . + Most people will not need this package. + +Package: libupnp4-doc +Architecture: all +Section: doc +Depends: ${misc:Depends} +Description: Documentation for the Portable SDK for UPnP Devices, version 1.8 + The Portable SDK for UPnP Devices (libupnp) provides developers with an + API and open source code for building control points, devices, and + bridges that are compliant with Version 1.0 of the Universal Plug and + Play Device Architecture Specification - see http://www.upnp.org/ for + specifications. + . + This package contains the HTML documentation for the libupnp4 library + in /usr/share/doc/libupnp4-doc/ + --- libupnp4-1.8.0~svn20100507.orig/debian/changelog +++ libupnp4-1.8.0~svn20100507/debian/changelog @@ -0,0 +1,170 @@ +libupnp4 (1.8.0~svn20100507-1.1ubuntu0.12.04.1) precise-security; urgency=low + + * SECURITY UPDATE: patch from Debian + - debian/patches/0001-Security-fix-for-CERT-issue-VU-922681: fix various + stack-based buffer overflows in service_unique_name() function + - CVE-2012-5958 + - CVE-2012-5959 + - CVE-2012-5960 + - CVE-2012-5961 + - CVE-2012-5962 + - CVE-2012-5963 + - CVE-2012-5964 + - CVE-2012-5965 + + -- Jamie Strandboge Wed, 13 Feb 2013 14:37:12 -0600 + +libupnp4 (1.8.0~svn20100507-1.1) unstable; urgency=low + + * Non-maintainer upload. + * Don't ship .la files (Closes: #622539). + + -- Luk Claes Sun, 26 Jun 2011 15:54:50 +0200 + +libupnp4 (1.8.0~svn20100507-1) unstable; urgency=low + + * New pull from upstream subversion + * Fixes to BSD build issues (Closes: #573321, FTBFS on Gnu/kFreeBSD) + * More debug tidying (07-neaten-debug.patch): + - send UPNP_CRITICAL msgs to the info log as well as to the error log. + - don't print HTTP headers to stdout as they're already in logfile. + * Always compile in logging code but don't log unless requested + (12-debian-always-debug.patch) to help porting other apps. + * Remove patches 03, 04, 06, 08 and 10, now in upstream (note naming + difference in upstream's string object accessors). + * Add $PTHREAD_CFLAGS to libupnp.pc as assumed by {acx,ax}_pthread.m4 + (patch 16, Closes: #581608). + + -- Nick Leverton Fri, 14 May 2010 15:34:11 +0100 + +libupnp4 (1.8.0~svn20090313-1) unstable; urgency=low + + * ACK NMU (thanks to gregor herrmann and Stefan Potyra). + * Pull from svn, see upstream changes.gz for details + (Closes: #492160, FTBFS on GNU/kFreeBSD, thanks to Petr Salinger). + * Update Sections and general Policy to 3.8.4 + * Use debhelper 7 dh instead of dbs + * Generate and update symbols file + * Rename libs to libupnp4, libixml4 and libthreadutil4, to allow + co-installing libupnp3 and libupnp4. + * New patch 04-string-access-functions.patch: add _strget_ accessors + to API, to avoid remembering to call UpnpString_get_String in clients. + * New patch 05-const-tidyup.patch for a few constness fixes. + * Upstream patch 06-patch-statevar-query.patch for missing CRNL. + * New patch 07-neaten-debug.patch to improve debug readability + * New patch 08-renewals-sid.patch to fix autorenewals. + * New patch 09-update-doc.patch to generate up to date -doc package. + * New patch 10-upnpinit-ntoa.patch to replace inet_ntoa by inet_ntop. + + -- Nick Leverton Mon, 08 Mar 2010 18:26:14 +0000 + +libupnp4 (1.8.0~cvs20080628-2.1) unstable; urgency=low + + * Non-maintainer upload. + * New patch 03-fix-duplicate-entries: remove duplicates from file list; + patch by Stefan Potyra (closes: #543068). + + -- gregor herrmann Sat, 28 Nov 2009 00:47:48 +0100 + +libupnp4 (1.8.0~cvs20080628-2) unstable; urgency=low + + * Rebuild with source name libupnp4, to allow libupnp3 to remain in + archive. + * Various dependencies have been fixed, closes: #490533. + * Added conflicts with libupnp3* (Closes: #490639) + + -- Nick Leverton Sun, 13 Jul 2008 19:58:10 +0100 + +libupnp (1.8.0~cvs20080628-1) unstable; urgency=low + + * New upstream release + * Bump soname yet again. This version is still under development but + it is promised to be a stable API once it is released ! + * Co-exist with libupnp3 to allow controlled transition over API + change. + [ unera ] + * Added lintian overrides. + + -- Nick Leverton Sat, 28 Jun 2008 10:18:16 +0100 + +libupnp (1.6.6-1) unstable; urgency=low + + * New upstream release + * Remove patch 03-upstream-upnp-rootdevice.patch, now in upstream. + * Remove buggy patch 02-debian-fixed-length-buffer-for-urls.patch + (Closes: #482737, reopens #353169). libupnp4 will include upstream's + wider changes for ridding the library of fixed-length static buffers. + * Update watchfile again for better uscan pattern matching + * Build -dbg symbol package anyway; allow pupnp "--enable-debug" via + DEB_BUILD_OPTIONS="debug" + * Update copyright file to reflect all contributors. + * Tidy up build to use dh_install. + + -- Nick Leverton Thu, 19 Jun 2008 18:27:11 +0100 + +libupnp (1.6.5-2) unstable; urgency=low + + * Correct New Maintainer bug number (was given as #426833, should + be #462833) (really Closes: #462833). + * Replace RSA Inc copyright MD5 functions by public domain + implementation (Closes: #459516). + * Remove Build-dep on doc++ as upstream now ships documentation in + tarball (Closes: #307562). + * Dynamically allocated buffer for uPnP Action urls (Closes: #353169). + * Update Description to match current fork of upstream. + * Fix watchfile to omit libupnp-doc tarballs. + * No longer ignore "upnp:rootdevice" advertisement, upstream svn r326 + (03-upstream-upnp-rootdevice.patch). + + -- Nick Leverton Mon, 21 Apr 2008 22:20:53 +0100 + +libupnp (1.6.5-1) unstable; urgency=low + + * New upstream release (Closes: #426388, #439373) + * New maintainer (Closes: #426833) + * Upstream soname changed, bump package to libupnp3 + * Make libupnp-dev depend on matching version of libupnp3 + + -- Nick Leverton Sun, 24 Feb 2008 10:29:48 +0000 + +libupnp (1.4.3-2) unstable; urgency=low + + * Make libupnp-dev depend on libupnp2. + + -- Steve McIntyre <93sam@debian.org> Sat, 28 Apr 2007 16:58:23 +0100 + +libupnp (1.4.3-1) unstable; urgency=low + + * New upstream release from pupnp fork (Closes: #392783, #400903, #320949). + * Do not claim libupnp-dev contains debugging symbols (Closes: #350115). + * Update to Standards-Version 3.7.2. + * Remove unnecessary ${shlibs:Depends} from libupnp-dev's Depends field. + * Thanks to Jeremy Laine for help on this release. + * Two kFreeBSD build failures reported should now be fixed. + Closes: #416254. Please open more bugs if there are any more failures. + + -- Steve McIntyre <93sam@debian.org> Sat, 31 Mar 2007 16:03:29 +0200 + +libupnp (1.2.1-3) unstable; urgency=low + + * Fix multiple compiler warnings fixes with gcc4. Thanks to Oskar + Liljeblad for a patch. Closes: #320949 + * Include debug versions of the libraries in the -dev package. + Closes: #350115 + * Updated Standards-version. + + -- Steve McIntyre <93sam@debian.org> Sun, 12 Feb 2006 20:55:35 +0000 + +libupnp (1.2.1-2) unstable; urgency=low + + * Fix FTBFS with gcc4. Thanks to Andreas Jochens for the patch. + Closes: #301775 + + -- Steve McIntyre <93sam@debian.org> Sun, 17 Jul 2005 20:23:44 +0300 + +libupnp (1.2.1-1) unstable; urgency=low + + * Initial version + + -- Steve McIntyre <93sam@debian.org> Tue, 18 Jan 2005 19:42:08 +0000 + --- libupnp4-1.8.0~svn20100507.orig/debian/libupnp4-doc.install +++ libupnp4-1.8.0~svn20100507/debian/libupnp4-doc.install @@ -0,0 +1 @@ +docs/doxygen/html usr/share/doc/libupnp4-doc --- libupnp4-1.8.0~svn20100507.orig/debian/rules +++ libupnp4-1.8.0~svn20100507/debian/rules @@ -0,0 +1,33 @@ +#!/usr/bin/make -f + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +%: + dh --with quilt,autotools-dev $@ + +override_dh_auto_configure: + autoreconf -f -i + dh_auto_configure -- --without-documentation --disable-samples --enable-debug + +override_dh_auto_build: + dh_auto_build + doxygen Doxyfile 2>/dev/null + +override_dh_auto_clean: + $(RM) -r docs/doxygen + dh_auto_clean + find -name "Makefile.in" -print0 | xargs -0r $(RM) + $(RM) tags # just in case + $(RM) aclocal.m4 configure autoconfig.h.in + +override_dh_install: + dh_install -plibupnp4-doc --sourcedir=. + dh_install --remaining-packages -X.la --list-missing + +override_dh_strip: + dh_strip --dbg-package=libupnp4-dbg + +override_dh_compress: + dh_compress -X/html/ + --- libupnp4-1.8.0~svn20100507.orig/debian/libupnp4.lintian-overrides +++ libupnp4-1.8.0~svn20100507/debian/libupnp4.lintian-overrides @@ -0,0 +1 @@ +libupnp4: package-name-doesnt-match-sonames --- libupnp4-1.8.0~svn20100507.orig/debian/libupnp4.install +++ libupnp4-1.8.0~svn20100507/debian/libupnp4.install @@ -0,0 +1 @@ +usr/lib/lib*.so.* usr/lib --- libupnp4-1.8.0~svn20100507.orig/debian/copyright +++ libupnp4-1.8.0~svn20100507/debian/copyright @@ -0,0 +1,157 @@ +Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=135 + +Name: pupnp +Source: http://pupnp.sourceforge.net/ +Maintainer: Marcelo Roberto Jimenez + +X-Copyright-History: + This is the Debian GNU/Linux packaged version of pupnp, the Portable SDK + for UPnP Devices, which is a fork of Intel's Linux SDK for UPnP Devices. + + +Copyright: 2000-2003 Intel Corporation - All Rights Reserved. + 2005-2006 RĂ©mi Turboult + 2006 Michel Pfeiffer and others + 2006 Alexander Chemeris + 2007-2010 Marcelo Roberto Jimenez + and other contributors as detailed in file THANKS. +Licence: BSD + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + - Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + - Neither name of Intel Corporation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + On Debian systems, the complete text of the BSD-license + can be found in `/usr/share/common-licenses/BSD'. + + +Files: debian/* +Copyright: 2005-2007 Steve McIntyre <93sam@debian.org> + 2008-2010 Nick Leverton +Licence: BSD + + +Files: upnp/src/*/sysdep.*, upnp/src/*/uuid.* +Copyright: 1990- 1993, 1996 Open Software Foundation, Inc. + 1989 by Hewlett-Packard Company, Palo Alto, Ca. & + Digital Equipment Corporation, Maynard, Mass. + 1998 Microsoft. +Licence: + To anyone who acknowledges that this file is provided "AS IS" + without any express or implied warranty: permission to use, copy, + modify, and distribute this file for any purpose is hereby + granted without fee, provided that the above copyright notices and + this notice appears in all source code copies, and that none of + the names of Open Software Foundation, Inc., Hewlett-Packard + Company, or Digital Equipment Corporation be used in advertising + or publicity pertaining to distribution of the software without + specific, written prior permission. Neither Open Software + Foundation, Inc., Hewlett-Packard Company, Microsoft, nor Digital Equipment + Corporation makes any representations about the suitability of + this software for any purpose. + + +Files: ixml/test/testdata/xml.ascc.net/* +Copyright: 1998 Academia Sinica, http://xml.ascc.net/ +Licence: + Unless otherwise stated, permission is granted to use, copy, link to, + translate and republish in any form, including for commercial use, + providing due acknowledgement of the copyright holder and the Chinese + XML Now! website is made. + + +Files: */doc/docxx.sty +Copyright: 1996 Roland Wunderling, Malte Zoeckler + 1999-2001 Dragos Acostachioaie +Licence: GPL-2+ + +Files: m4/ax_cflags*.m4 +Copyright: 2006 Guido U. Draheim +Licence: GPL-2+ with Autoconf exception + +Files: m4/acx_pthread.m4 +Copyright: 2006 Steven G. Johnson +Licence: GPL-2+ with Autoconf exception + +Files: m4/type_socklen_t.m4 +Copyright: 2005 Lars Brinkhoff +Licence: GPL-2+ with Autoconf exception + +Licence: GPL-2+ + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + On Debian systems, the complete text of the GNU General + Public License can be found in `/usr/share/common-licenses/GPL-2'. + +Licence: Autoconf exception + As a special exception, the respective Autoconf Macro's copyright + owner gives unlimited permission to copy, distribute and modify the + configure scripts that are the output of Autoconf when processing + the Macro. You need not follow the terms of the GNU General Public + License when using or distributing such scripts, even though + portions of the text of the Macro appear in them. The GNU General + Public License (GPL) does govern all other use of the material that + constitutes the Autoconf Macro. + + This special exception to the GPL applies to versions of the + Autoconf Macro released by the Autoconf Macro Archive. When you + make and distribute a modified version of the Autoconf Macro, you + may extend this special exception to the GPL to apply to your + modified version as well. + + +Files: upnp/src/uuid/md5.c, upnp/src/inc/md5.h: +Copyright: 1991-2, RSA Data Security, Inc. Created 1991. All rights reserved. +Licence: + License to copy and use this software is granted provided that it + is identified as the "RSA Data Security, Inc. MD5 Message-Digest + Algorithm" in all material mentioning or referencing this software + or this function. + + +Files: upnp/src/inet_pton.c +Copyright: 1996-1999 by Internet Software Consortium. +Licence: + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS + ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE + CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS + ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS + SOFTWARE. --- libupnp4-1.8.0~svn20100507.orig/debian/source/format +++ libupnp4-1.8.0~svn20100507/debian/source/format @@ -0,0 +1 @@ +1.0 --- libupnp4-1.8.0~svn20100507.orig/debian/patches/05-const-tidyup.patch +++ libupnp4-1.8.0~svn20100507/debian/patches/05-const-tidyup.patch @@ -0,0 +1,65 @@ +Description: Add some missing consts to prevent complaints. +Author: Nick Leverton + +Index: libupnp4-1.8.0~svn20100425/upnp/inc/upnp.h +=================================================================== +--- libupnp4-1.8.0~svn20100425.orig/upnp/inc/upnp.h 2010-04-25 20:42:19.000000000 +0100 ++++ libupnp4-1.8.0~svn20100425/upnp/inc/upnp.h 2010-04-25 20:42:22.000000000 +0100 +@@ -1058,7 +1058,7 @@ + * listening for UPnP related requests. + * \li On error: \c NULL is returned if \b UpnpInit has not succeeded. + */ +-EXPORT_SPEC char *UpnpGetServerIpAddress(void); ++EXPORT_SPEC const char *UpnpGetServerIpAddress(void); + + + /*! +@@ -1072,7 +1072,7 @@ + * listening for UPnP related requests. + * \li On error: \c NULL is returned if \b UpnpInit has not succeeded. + */ +-EXPORT_SPEC char *UpnpGetServerIp6Address(void); ++EXPORT_SPEC const char *UpnpGetServerIp6Address(void); + + + /*! +@@ -1788,7 +1788,7 @@ + * Plug and Play Device Architecture specification. */ + IXML_Document *PropSet, + /*! [in] The subscription ID of the newly registered control point. */ +- Upnp_SID SubsId); ++ const Upnp_SID SubsId); + + + /*! +Index: libupnp4-1.8.0~svn20100425/upnp/src/api/upnpapi.c +=================================================================== +--- libupnp4-1.8.0~svn20100425.orig/upnp/src/api/upnpapi.c 2010-04-25 20:42:19.000000000 +0100 ++++ libupnp4-1.8.0~svn20100425/upnp/src/api/upnpapi.c 2010-04-25 20:42:22.000000000 +0100 +@@ -615,7 +615,7 @@ + } + + +-char *UpnpGetServerIpAddress(void) ++const char *UpnpGetServerIpAddress(void) + { + if (UpnpSdkInit != 1) { + return NULL; +@@ -625,7 +625,7 @@ + } + + +-char *UpnpGetServerIp6Address(void) ++const char *UpnpGetServerIp6Address(void) + { + if( UpnpSdkInit != 1 ) { + return NULL; +@@ -2195,7 +2195,7 @@ + const char *DevID_const, + const char *ServName_const, + IXML_Document *PropSet, +- Upnp_SID SubsId) ++ const Upnp_SID SubsId) + { + int ret = 0; + int line = 0; --- libupnp4-1.8.0~svn20100507.orig/debian/patches/01-debian-md5-licence.patch +++ libupnp4-1.8.0~svn20100507/debian/patches/01-debian-md5-licence.patch @@ -0,0 +1,693 @@ +Description: Replace RSA Inc copyright MD5 functions by public domain implementation. +Bug-Debian: http://bugs.debian.org/459516 + +Index: libupnp4-1.8.0~svn20100425/configure.ac +=================================================================== +--- libupnp4-1.8.0~svn20100425.orig/configure.ac 2010-04-25 20:42:22.000000000 +0100 ++++ libupnp4-1.8.0~svn20100425/configure.ac 2010-04-25 20:42:22.000000000 +0100 +@@ -393,6 +393,9 @@ + # Checks for typedefs, structures, and compiler characteristics + # + AC_C_CONST ++AC_C_BIGENDIAN ++AC_CHECK_SIZEOF(unsigned int) ++AC_CHECK_SIZEOF(unsigned long) + + # The test for socklen_t was getting it wrong when it exists but is in ws2tcpip.h, + # so we use a new test. +Index: libupnp4-1.8.0~svn20100425/upnp/src/inc/md5.h +=================================================================== +--- libupnp4-1.8.0~svn20100425.orig/upnp/src/inc/md5.h 2010-04-25 20:42:19.000000000 +0100 ++++ libupnp4-1.8.0~svn20100425/upnp/src/inc/md5.h 2010-04-25 20:42:22.000000000 +0100 +@@ -1,39 +1,47 @@ +-/* MD5.H - header file for MD5C.C */ +- +- +-/* Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All +- rights reserved. +- +- License to copy and use this software is granted provided that it +- is identified as the "RSA Data Security, Inc. MD5 Message-Digest +- Algorithm" in all material mentioning or referencing this software +- or this function. +- +- License is also granted to make and use derivative works provided +- that such works are identified as "derived from the RSA Data +- Security, Inc. MD5 Message-Digest Algorithm" in all material +- mentioning or referencing the derived work. +- +- RSA Data Security, Inc. makes no representations concerning either +- the merchantability of this software or the suitability of this +- software for any particular purpose. It is provided "as is" +- without express or implied warranty of any kind. +- +- These notices must be retained in any copies of any part of this +- documentation and/or software. ++/* ++ * This is the header file for the MD5 message-digest algorithm. ++ * The algorithm is due to Ron Rivest. This code was ++ * written by Colin Plumb in 1993, no copyright is claimed. ++ * This code is in the public domain; do with it what you wish. ++ * ++ * Equivalent code is available from RSA Data Security, Inc. ++ * This code has been tested against that, and is equivalent, ++ * except that you don't need to include two pages of legalese ++ * with every copy. ++ * ++ * To compute the message digest of a chunk of bytes, declare an ++ * MD5Context structure, pass it to MD5Init, call MD5Update as ++ * needed on buffers full of bytes, and then call MD5Final, which ++ * will fill a supplied 16-byte array with the digest. ++ * ++ * Changed so as no longer to depend on Colin Plumb's `usual.h' ++ * header definitions; now uses stuff from dpkg's config.h ++ * - Ian Jackson . ++ * Still in the public domain. + */ + ++#ifndef MD5_H ++#define MD5_H + +-/* MD5 context. */ +-typedef struct { ++#define md5byte unsigned char + +- UINT4 state[4]; /* state (ABCD) */ +- UINT4 count[2]; /* number of bits, modulo 2^64 (lsb first) */ +- unsigned char buffer[64]; /* input buffer */ +- +-} MD5_CTX; +- +-void MD5Init PROTO_LIST ((MD5_CTX *)); +-void MD5Update PROTO_LIST ((MD5_CTX *, unsigned char *, unsigned int)); +-void MD5Final PROTO_LIST ((unsigned char [16], MD5_CTX *)); ++#if SIZEOF_UNSIGNED_LONG==4 ++# define UWORD32 unsigned long ++#elif SIZEOF_UNSIGNED_INT==4 ++# define UWORD32 unsigned int ++#else ++# error I do not know what to use for a UWORD32. ++#endif ++ ++struct MD5Context { ++ UWORD32 buf[4]; ++ UWORD32 bytes[2]; ++ UWORD32 in[16]; ++}; ++ ++void MD5Init(struct MD5Context *context); ++void MD5Update(struct MD5Context *context, md5byte const *buf, unsigned len); ++void MD5Final(unsigned char digest[16], struct MD5Context *context); ++void MD5Transform(UWORD32 buf[4], UWORD32 const in[16]); + ++#endif /* !MD5_H */ +Index: libupnp4-1.8.0~svn20100425/upnp/src/uuid/md5.c +=================================================================== +--- libupnp4-1.8.0~svn20100425.orig/upnp/src/uuid/md5.c 2010-04-25 20:42:19.000000000 +0100 ++++ libupnp4-1.8.0~svn20100425/upnp/src/uuid/md5.c 2010-04-25 20:42:22.000000000 +0100 +@@ -1,353 +1,241 @@ + /* +- MD5C.C - RSA Data Security, Inc., MD5 message-digest algorithm ++ * This code implements the MD5 message-digest algorithm. ++ * The algorithm is due to Ron Rivest. This code was ++ * written by Colin Plumb in 1993, no copyright is claimed. ++ * This code is in the public domain; do with it what you wish. ++ * ++ * Equivalent code is available from RSA Data Security, Inc. ++ * This code has been tested against that, and is equivalent, ++ * except that you don't need to include two pages of legalese ++ * with every copy. ++ * ++ * To compute the message digest of a chunk of bytes, declare an ++ * MD5Context structure, pass it to MD5Init, call MD5Update as ++ * needed on buffers full of bytes, and then call MD5Final, which ++ * will fill a supplied 16-byte array with the digest. ++ * ++ * Changed so as no longer to depend on Colin Plumb's `usual.h' header ++ * definitions; now uses stuff from dpkg's config.h. ++ * - Ian Jackson . ++ * Still in the public domain. + */ +- +-/* +- Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All +- rights reserved. +- +- License to copy and use this software is granted provided that it +- is identified as the "RSA Data Security, Inc. MD5 Message-Digest +- Algorithm" in all material mentioning or referencing this software +- or this function. +- +- License is also granted to make and use derivative works provided +- that such works are identified as "derived from the RSA Data +- Security, Inc. MD5 Message-Digest Algorithm" in all material +- mentioning or referencing the derived work. +- +- RSA Data Security, Inc. makes no representations concerning either +- the merchantability of this software or the suitability of this +- software for any particular purpose. It is provided "as is" +- without express or implied warranty of any kind. +- +- These notices must be retained in any copies of any part of this +- documentation and/or software. +- +- */ +- + #include "config.h" +-#include "global.h" +-#include "md5.h" + +-/* +- Constants for MD5Transform routine. +- */ +-#define S11 7 +-#define S12 12 +-#define S13 17 +-#define S14 22 +-#define S21 5 +-#define S22 9 +-#define S23 14 +-#define S24 20 +-#define S31 4 +-#define S32 11 +-#define S33 16 +-#define S34 23 +-#define S41 6 +-#define S42 10 +-#define S43 15 +-#define S44 21 +- +-static void MD5Transform PROTO_LIST((UINT4[4], unsigned char[64])); +-static void Encode PROTO_LIST((unsigned char *, UINT4 *, unsigned int)); +-static void Decode PROTO_LIST((UINT4 *, unsigned char *, unsigned int)); +-static void MD5_memcpy PROTO_LIST((POINTER, POINTER, unsigned int)); +-static void MD5_memset PROTO_LIST((POINTER, int, unsigned int)); +- +-static unsigned char PADDING[64] = { +- 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +-}; +- +-/* +- F, G, H and I are basic MD5 functions. +- */ +-#define F(x, y, z) (((x) & (y)) | ((~x) & (z))) +-#define G(x, y, z) (((x) & (z)) | ((y) & (~z))) +-#define H(x, y, z) ((x) ^ (y) ^ (z)) +-#define I(x, y, z) ((y) ^ ((x) | (~z))) +- +-/* +- ROTATE_LEFT rotates x left n bits. +- */ +-#define ROTATE_LEFT(x, n) (((x) <<(n)) | ((x) >> (32-(n)))) ++#include /* for memcpy() */ ++#include /* for stupid systems */ ++#include /* for ntohl() */ + +-/* +- FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4. +- Rotation is separate from addition to prevent recomputation. +- */ +-#define FF(a, b, c, d, x, s, ac) { \ +- (a) += F ((b), (c), (d)) + (x) + (UINT4)(ac); \ +- (a) = ROTATE_LEFT ((a), (s)); \ +- (a) += (b); \ +- } +- +-#define GG(a, b, c, d, x, s, ac) { \ +- (a) += G ((b), (c), (d)) + (x) + (UINT4)(ac); \ +- (a) = ROTATE_LEFT ((a), (s)); \ +- (a) += (b); \ +- } +- +-#define HH(a, b, c, d, x, s, ac) { \ +- (a) += H ((b), (c), (d)) + (x) + (UINT4)(ac); \ +- (a) = ROTATE_LEFT ((a), (s)); \ +- (a) += (b); \ +- } +- +-#define II(a, b, c, d, x, s, ac) { \ +- (a) += I ((b), (c), (d)) + (x) + (UINT4)(ac); \ +- (a) = ROTATE_LEFT ((a), (s)); \ +- (a) += (b); \ +- } ++#include "md5.h" + +-/* +- MD5 initialization. Begins an MD5 operation, writing a new context. +- */ ++#ifdef WORDS_BIGENDIAN + void +-MD5Init(MD5_CTX * context) ++byteSwap(UWORD32 *buf, unsigned words) + { +- context->count[0] = context->count[1] = 0; +- /* Load magic initialization constants. */ +- context->state[0] = 0x67452301; +- context->state[1] = 0xefcdab89; +- context->state[2] = 0x98badcfe; +- context->state[3] = 0x10325476; ++ md5byte *p = (md5byte *)buf; ++ ++ do { ++ *buf++ = (UWORD32)((unsigned)p[3] << 8 | p[2]) << 16 | ++ ((unsigned)p[1] << 8 | p[0]); ++ p += 4; ++ } while (--words); + } ++#else ++#define byteSwap(buf,words) ++#endif + + /* +- MD5 block update operation. Continues an MD5 message-digest +- operation, processing another message block, and updating the +- context. ++ * Start MD5 accumulation. Set bit count to 0 and buffer to mysterious ++ * initialization constants. + */ +- + void +-MD5Update(MD5_CTX *context, unsigned char *input, unsigned int inputLen) ++MD5Init(struct MD5Context *ctx) + { +- unsigned int i; +- unsigned int index; +- unsigned int partLen; +- +- /* Compute number of bytes mod 64 */ +- index = (unsigned int)((context->count[0] >> 3) & 0x3F); +- +- /* Update number of bits */ +- if ((context->count[0] += ((UINT4)inputLen << 3)) < ((UINT4)inputLen << 3)) { +- context->count[1]++; +- } +- context->count[1] += ((UINT4)inputLen >> 29); +- partLen = 64 - index; ++ ctx->buf[0] = 0x67452301; ++ ctx->buf[1] = 0xefcdab89; ++ ctx->buf[2] = 0x98badcfe; ++ ctx->buf[3] = 0x10325476; + +- /* Transform as many times as possible. */ +- if (inputLen >= partLen) { +- MD5_memcpy((POINTER)&context->buffer[index], (POINTER)input, partLen); +- MD5Transform(context->state, context->buffer); +- for (i = partLen; i + 63 < inputLen; i += 64) { +- MD5Transform(context->state, &input[i]); +- } +- index = 0; +- } else { +- i = 0; +- } +- +- /* Buffer remaining input */ +- MD5_memcpy((POINTER)&context->buffer[index], (POINTER)&input[i], inputLen - i); ++ ctx->bytes[0] = 0; ++ ctx->bytes[1] = 0; + } + + /* +- MD5 finalization. Ends an MD5 message-digest operation, writing the +- the message digest and zeroizing the context. ++ * Update context to reflect the concatenation of another buffer full ++ * of bytes. + */ + void +-MD5Final(unsigned char digest[16], MD5_CTX *context) ++MD5Update(struct MD5Context *ctx, md5byte const *buf, unsigned len) + { +- unsigned char bits[8]; +- unsigned int index; +- unsigned int padLen; +- +- /* Save number of bits */ +- Encode(bits, context->count, 8); +- +- /* Pad out to 56 mod 64. */ +- index = (unsigned int)((context->count[0] >> 3) & 0x3f); +- padLen = (index < 56) ? (56 - index) : (120 - index); +- MD5Update(context, PADDING, padLen); ++ UWORD32 t; + +- /* Append length (before padding) */ +- MD5Update(context, bits, 8); ++ /* Update byte count */ + +- /* Store state in digest */ +- Encode(digest, context->state, 16); ++ t = ctx->bytes[0]; ++ if ((ctx->bytes[0] = t + len) < t) ++ ctx->bytes[1]++; /* Carry from low to high */ ++ ++ t = 64 - (t & 0x3f); /* Space available in ctx->in (at least 1) */ ++ if (t > len) { ++ memcpy((md5byte *)ctx->in + 64 - t, buf, len); ++ return; ++} ++ /* First chunk is an odd size */ ++ memcpy((md5byte *)ctx->in + 64 - t, buf, t); ++ byteSwap(ctx->in, 16); ++ MD5Transform(ctx->buf, ctx->in); ++ buf += t; ++ len -= t; ++ ++ /* Process data in 64-byte chunks */ ++ while (len >= 64) { ++ memcpy(ctx->in, buf, 64); ++ byteSwap(ctx->in, 16); ++ MD5Transform(ctx->buf, ctx->in); ++ buf += 64; ++ len -= 64; ++ } + +- /* Zeroize sensitive information. */ +- MD5_memset((POINTER)context, 0, sizeof(*context)); ++ /* Handle any remaining bytes of data. */ ++ memcpy(ctx->in, buf, len); + } + +-/* +- MD5 basic transformation. Transforms state based on block. +- */ +-static void +-MD5Transform(UINT4 state[4], unsigned char block[64]) +-{ +- UINT4 a = state[0], +- b = state[1], +- c = state[2], +- d = state[3], +- x[16]; +- +- Decode( x, block, 64 ); +- + /* +- Round 1 ++ * Final wrapup - pad to 64-byte boundary with the bit pattern ++ * 1 0* (64-bit count of bits processed, MSB-first) + */ +- FF( a, b, c, d, x[0], S11, 0xd76aa478 ); /* 1 */ +- FF( d, a, b, c, x[1], S12, 0xe8c7b756 ); /* 2 */ +- FF( c, d, a, b, x[2], S13, 0x242070db ); /* 3 */ +- FF( b, c, d, a, x[3], S14, 0xc1bdceee ); /* 4 */ +- FF( a, b, c, d, x[4], S11, 0xf57c0faf ); /* 5 */ +- FF( d, a, b, c, x[5], S12, 0x4787c62a ); /* 6 */ +- FF( c, d, a, b, x[6], S13, 0xa8304613 ); /* 7 */ +- FF( b, c, d, a, x[7], S14, 0xfd469501 ); /* 8 */ +- FF( a, b, c, d, x[8], S11, 0x698098d8 ); /* 9 */ +- FF( d, a, b, c, x[9], S12, 0x8b44f7af ); /* 10 */ +- FF( c, d, a, b, x[10], S13, 0xffff5bb1 ); /* 11 */ +- FF( b, c, d, a, x[11], S14, 0x895cd7be ); /* 12 */ +- FF( a, b, c, d, x[12], S11, 0x6b901122 ); /* 13 */ +- FF( d, a, b, c, x[13], S12, 0xfd987193 ); /* 14 */ +- FF( c, d, a, b, x[14], S13, 0xa679438e ); /* 15 */ +- FF( b, c, d, a, x[15], S14, 0x49b40821 ); /* 16 */ ++void ++MD5Final(md5byte digest[16], struct MD5Context *ctx) ++{ ++ int count = ctx->bytes[0] & 0x3f; /* Number of bytes in ctx->in */ ++ md5byte *p = (md5byte *)ctx->in + count; + +- /* +- Round 2 +- */ +- GG( a, b, c, d, x[1], S21, 0xf61e2562 ); /* 17 */ +- GG( d, a, b, c, x[6], S22, 0xc040b340 ); /* 18 */ +- GG( c, d, a, b, x[11], S23, 0x265e5a51 ); /* 19 */ +- GG( b, c, d, a, x[0], S24, 0xe9b6c7aa ); /* 20 */ +- GG( a, b, c, d, x[5], S21, 0xd62f105d ); /* 21 */ +- GG( d, a, b, c, x[10], S22, 0x2441453 ); /* 22 */ +- GG( c, d, a, b, x[15], S23, 0xd8a1e681 ); /* 23 */ +- GG( b, c, d, a, x[4], S24, 0xe7d3fbc8 ); /* 24 */ +- GG( a, b, c, d, x[9], S21, 0x21e1cde6 ); /* 25 */ +- GG( d, a, b, c, x[14], S22, 0xc33707d6 ); /* 26 */ +- GG( c, d, a, b, x[3], S23, 0xf4d50d87 ); /* 27 */ +- GG( b, c, d, a, x[8], S24, 0x455a14ed ); /* 28 */ +- GG( a, b, c, d, x[13], S21, 0xa9e3e905 ); /* 29 */ +- GG( d, a, b, c, x[2], S22, 0xfcefa3f8 ); /* 30 */ +- GG( c, d, a, b, x[7], S23, 0x676f02d9 ); /* 31 */ +- GG( b, c, d, a, x[12], S24, 0x8d2a4c8a ); /* 32 */ ++ /* Set the first char of padding to 0x80. There is always room. */ ++ *p++ = 0x80; + +- /* +- Round 3 +- */ +- HH( a, b, c, d, x[5], S31, 0xfffa3942 ); /* 33 */ +- HH( d, a, b, c, x[8], S32, 0x8771f681 ); /* 34 */ +- HH( c, d, a, b, x[11], S33, 0x6d9d6122 ); /* 35 */ +- HH( b, c, d, a, x[14], S34, 0xfde5380c ); /* 36 */ +- HH( a, b, c, d, x[1], S31, 0xa4beea44 ); /* 37 */ +- HH( d, a, b, c, x[4], S32, 0x4bdecfa9 ); /* 38 */ +- HH( c, d, a, b, x[7], S33, 0xf6bb4b60 ); /* 39 */ +- HH( b, c, d, a, x[10], S34, 0xbebfbc70 ); /* 40 */ +- HH( a, b, c, d, x[13], S31, 0x289b7ec6 ); /* 41 */ +- HH( d, a, b, c, x[0], S32, 0xeaa127fa ); /* 42 */ +- HH( c, d, a, b, x[3], S33, 0xd4ef3085 ); /* 43 */ +- HH( b, c, d, a, x[6], S34, 0x4881d05 ); /* 44 */ +- HH( a, b, c, d, x[9], S31, 0xd9d4d039 ); /* 45 */ +- HH( d, a, b, c, x[12], S32, 0xe6db99e5 ); /* 46 */ +- HH( c, d, a, b, x[15], S33, 0x1fa27cf8 ); /* 47 */ +- HH( b, c, d, a, x[2], S34, 0xc4ac5665 ); /* 48 */ ++ /* Bytes of padding needed to make 56 bytes (-8..55) */ ++ count = 56 - 1 - count; + +- /* +- Round 4 +- */ +- II( a, b, c, d, x[0], S41, 0xf4292244 ); /* 49 */ +- II( d, a, b, c, x[7], S42, 0x432aff97 ); /* 50 */ +- II( c, d, a, b, x[14], S43, 0xab9423a7 ); /* 51 */ +- II( b, c, d, a, x[5], S44, 0xfc93a039 ); /* 52 */ +- II( a, b, c, d, x[12], S41, 0x655b59c3 ); /* 53 */ +- II( d, a, b, c, x[3], S42, 0x8f0ccc92 ); /* 54 */ +- II( c, d, a, b, x[10], S43, 0xffeff47d ); /* 55 */ +- II( b, c, d, a, x[1], S44, 0x85845dd1 ); /* 56 */ +- II( a, b, c, d, x[8], S41, 0x6fa87e4f ); /* 57 */ +- II( d, a, b, c, x[15], S42, 0xfe2ce6e0 ); /* 58 */ +- II( c, d, a, b, x[6], S43, 0xa3014314 ); /* 59 */ +- II( b, c, d, a, x[13], S44, 0x4e0811a1 ); /* 60 */ +- II( a, b, c, d, x[4], S41, 0xf7537e82 ); /* 61 */ +- II( d, a, b, c, x[11], S42, 0xbd3af235 ); /* 62 */ +- II( c, d, a, b, x[2], S43, 0x2ad7d2bb ); /* 63 */ +- II( b, c, d, a, x[9], S44, 0xeb86d391 ); /* 64 */ +- +- state[0] += a; +- state[1] += b; +- state[2] += c; +- state[3] += d; ++ if (count < 0) { /* Padding forces an extra block */ ++ memset(p, 0, count + 8); ++ byteSwap(ctx->in, 16); ++ MD5Transform(ctx->buf, ctx->in); ++ p = (md5byte *)ctx->in; ++ count = 56; ++ } ++ memset(p, 0, count); ++ byteSwap(ctx->in, 14); + +- /* +- Zeroize sensitive information. +- */ +- MD5_memset( ( POINTER ) x, 0, sizeof( x ) ); ++ /* Append length in bits and transform */ ++ ctx->in[14] = ctx->bytes[0] << 3; ++ ctx->in[15] = ctx->bytes[1] << 3 | ctx->bytes[0] >> 29; ++ MD5Transform(ctx->buf, ctx->in); + ++ byteSwap(ctx->buf, 4); ++ memcpy(digest, ctx->buf, 16); ++ memset(ctx, 0, sizeof(ctx)); /* In case it's sensitive */ + } + +-/* +- Encodes input (UINT4) into output (unsigned char). Assumes len is +- a multiple of 4. +- */ +-static void +-Encode(unsigned char *output, UINT4 *input, unsigned int len) +-{ +- unsigned int i; +- unsigned int j; +- for (i = 0, j = 0; j < len; ++i, j += 4) { +- output[j+0] = (unsigned char)((input[i] >> 0) & 0xff); +- output[j+1] = (unsigned char)((input[i] >> 8) & 0xff); +- output[j+2] = (unsigned char)((input[i] >> 16) & 0xff); +- output[j+3] = (unsigned char)((input[i] >> 24) & 0xff); +- } +-} ++#ifndef ASM_MD5 + +-/* +- Decodes input (unsigned char) into output (UINT4). Assumes len is +- a multiple of 4. +- */ ++/* The four core functions - F1 is optimized somewhat */ + +-static void +-Decode(UINT4 *output, unsigned char *input, unsigned int len) +-{ +- unsigned int i; +- unsigned int j; +- for (i = 0, j = 0; j < len; ++i, j += 4) { +- output[i] = +- (((UINT4)input[j+0]) << 0) | +- (((UINT4)input[j+1]) << 8) | +- (((UINT4)input[j+2]) << 16) | +- (((UINT4)input[j+3]) << 24); +- } +-} ++/* #define F1(x, y, z) (x & y | ~x & z) */ ++#define F1(x, y, z) (z ^ (x & (y ^ z))) ++#define F2(x, y, z) F1(z, x, y) ++#define F3(x, y, z) (x ^ y ^ z) ++#define F4(x, y, z) (y ^ (x | ~z)) + +-/* +- Note: Replace for loop with standard memcpy if possible. +- */ +-static void +-MD5_memcpy(POINTER output, POINTER input, unsigned int len) +-{ +- unsigned int i; +- for (i = 0; i < len; ++i) { +- output[i] = input[i]; +- } +-} ++/* This is the central step in the MD5 algorithm. */ ++#define MD5STEP(f,w,x,y,z,in,s) \ ++ (w += f(x,y,z) + in, w = (w<>(32-s)) + x) + + /* +- Note: Replace for loop with standard memset if possible. ++ * The core of the MD5 algorithm, this alters an existing MD5 hash to ++ * reflect the addition of 16 longwords of new data. MD5Update blocks ++ * the data and converts bytes into longwords for this routine. + */ +-static void +-MD5_memset(POINTER output, int value, unsigned int len) ++void ++MD5Transform(UWORD32 buf[4], UWORD32 const in[16]) + { +- unsigned int i; +- for (i = 0; i < len; ++i) { +- ((char *)output)[i] = (char)value; +- } ++ register UWORD32 a, b, c, d; ++ ++ a = buf[0]; ++ b = buf[1]; ++ c = buf[2]; ++ d = buf[3]; ++ ++ MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7); ++ MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12); ++ MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17); ++ MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22); ++ MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7); ++ MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12); ++ MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17); ++ MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22); ++ MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7); ++ MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12); ++ MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17); ++ MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22); ++ MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7); ++ MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12); ++ MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17); ++ MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22); ++ ++ MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5); ++ MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9); ++ MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14); ++ MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20); ++ MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5); ++ MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9); ++ MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14); ++ MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20); ++ MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5); ++ MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9); ++ MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14); ++ MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20); ++ MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5); ++ MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9); ++ MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14); ++ MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20); ++ ++ MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4); ++ MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11); ++ MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16); ++ MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23); ++ MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4); ++ MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11); ++ MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16); ++ MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23); ++ MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4); ++ MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11); ++ MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16); ++ MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23); ++ MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4); ++ MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11); ++ MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16); ++ MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23); ++ ++ MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6); ++ MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10); ++ MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15); ++ MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21); ++ MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6); ++ MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10); ++ MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15); ++ MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21); ++ MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6); ++ MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10); ++ MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15); ++ MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21); ++ MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6); ++ MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10); ++ MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15); ++ MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21); ++ ++ buf[0] += a; ++ buf[1] += b; ++ buf[2] += c; ++ buf[3] += d; + } + ++#endif +Index: libupnp4-1.8.0~svn20100425/upnp/src/uuid/sysdep.c +=================================================================== +--- libupnp4-1.8.0~svn20100425.orig/upnp/src/uuid/sysdep.c 2010-04-25 20:42:19.000000000 +0100 ++++ libupnp4-1.8.0~svn20100425/upnp/src/uuid/sysdep.c 2010-04-25 20:42:22.000000000 +0100 +@@ -86,7 +86,7 @@ + void + get_random_info(char seed[16]) + { +- MD5_CTX c; ++ struct MD5Context c; + typedef struct { + MEMORYSTATUS m; + SYSTEM_INFO s; +@@ -144,7 +144,7 @@ + void + get_random_info(unsigned char seed[16]) + { +- MD5_CTX c; ++ struct MD5Context c; + typedef struct { + //struct sysinfo s; + struct timeval t; +Index: libupnp4-1.8.0~svn20100425/upnp/src/uuid/uuid.c +=================================================================== +--- libupnp4-1.8.0~svn20100425.orig/upnp/src/uuid/uuid.c 2010-04-25 20:42:19.000000000 +0100 ++++ libupnp4-1.8.0~svn20100425/upnp/src/uuid/uuid.c 2010-04-25 20:42:22.000000000 +0100 +@@ -306,7 +306,7 @@ + int namelen /* the length of the name */ + ) + { +- MD5_CTX c; ++ struct MD5Context c; + unsigned char hash[16]; + uuid_upnp net_nsid; /* context UUID in network byte order */ + --- libupnp4-1.8.0~svn20100507.orig/debian/patches/00-svn-version.patch +++ libupnp4-1.8.0~svn20100507/debian/patches/00-svn-version.patch @@ -0,0 +1,16 @@ +Description: Building from svn, update the configure.ac version number. +From: Nick Leverton + +Index: libupnp4-1.8.0~svn20100315/configure.ac +=================================================================== +--- libupnp4-1.8.0~svn20100315.orig/configure.ac 2010-03-01 22:01:18.000000000 +0000 ++++ libupnp4-1.8.0~svn20100315/configure.ac 2010-03-01 22:01:36.000000000 +0000 +@@ -9,7 +9,7 @@ + + AC_PREREQ(2.60) + +-AC_INIT([libupnp], [1.8.0], [mroberto@users.sourceforge.net]) ++AC_INIT([libupnp], [1.8.0~svn20100401], [mroberto@users.sourceforge.net]) + dnl ############################################################################ + dnl # *Independently* of the above libupnp package version, the libtool version + dnl # of the 3 libraries need to be updated whenever there is a change released: --- libupnp4-1.8.0~svn20100507.orig/debian/patches/14-ixml-extra-debug.patch +++ libupnp4-1.8.0~svn20100507/debian/patches/14-ixml-extra-debug.patch @@ -0,0 +1,16 @@ +Description: Temporary interoperability debugging for Debian + +Index: libupnp4-1.8.0~svn20100507/ixml/src/ixmlparser.c +=================================================================== +--- libupnp4-1.8.0~svn20100507.orig/ixml/src/ixmlparser.c 2010-05-14 13:47:54.000000000 +0100 ++++ libupnp4-1.8.0~svn20100507/ixml/src/ixmlparser.c 2010-05-14 16:06:28.000000000 +0100 +@@ -542,7 +542,8 @@ + *len = 0; + ret = -1; + } +- IxmlPrintf(__FILE__, line, "Parser_UTF8ToInt", "Error %d\n", ret); ++ IxmlPrintf(__FILE__, line, "Parser_UTF8ToInt", ++ "Error %d parsing UTF8 string beginning %02x\n", ret, *ss); + return ret; + } + } --- libupnp4-1.8.0~svn20100507.orig/debian/patches/15-upnp-extra-debug +++ libupnp4-1.8.0~svn20100507/debian/patches/15-upnp-extra-debug @@ -0,0 +1,52 @@ +Description: Temporary debugging for pesky SID/subscription problem + +Index: libupnp4-1.8.0~svn20100425/upnp/src/gena/gena_device.c +=================================================================== +--- libupnp4-1.8.0~svn20100425.orig/upnp/src/gena/gena_device.c 2010-05-12 13:43:48.000000000 +0100 ++++ libupnp4-1.8.0~svn20100425/upnp/src/gena/gena_device.c 2010-05-12 13:54:06.000000000 +0100 +@@ -1383,6 +1383,9 @@ + membuffer event_url_path; + memptr timeout_hdr; + ++ UpnpPrintf(UPNP_INFO, GENA, __FILE__, __LINE__, ++ "Subscription Renewal Request Received:\n"); ++ + // if a CALLBACK or NT header is present, then it is an error + if( httpmsg_find_hdr( request, HDR_CALLBACK, NULL ) != NULL || + httpmsg_find_hdr( request, HDR_NT, NULL ) != NULL ) { +@@ -1392,6 +1395,8 @@ + // get SID + if( httpmsg_find_hdr( request, HDR_SID, &temp_hdr ) == NULL || + temp_hdr.length > SID_SIZE ) { ++ UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__, ++ "Renew request: no SID included\n" ); + error_respond( info, HTTP_PRECONDITION_FAILED, request ); + return; + } +@@ -1411,6 +1416,8 @@ + // CURRENTLY, ONLY SUPPORT ONE DEVICE + if( GetDeviceHandleInfo( info->foreign_sockaddr.ss_family, + &device_handle, &handle_info ) != HND_DEVICE ) { ++ UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__, ++ "Renew request: incorrect Device for this webserver\n" ); + error_respond( info, HTTP_PRECONDITION_FAILED, request ); + membuffer_destroy( &event_url_path ); + HandleUnlock(); +@@ -1424,6 +1431,8 @@ + if( service == NULL || + !service->active || + ( ( sub = GetSubscriptionSID( sid, service ) ) == NULL ) ) { ++ UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__, ++ "Renew request: service inactive or not subscribed by this SID\n" ); + error_respond( info, HTTP_PRECONDITION_FAILED, request ); + HandleUnlock(); + return; +@@ -1437,6 +1446,8 @@ + // too many subscriptions + if( handle_info->MaxSubscriptions != -1 && + service->TotalSubscriptions > handle_info->MaxSubscriptions ) { ++ UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__, ++ "Renew request: too many subscriptions\n" ); + error_respond( info, HTTP_INTERNAL_SERVER_ERROR, request ); + RemoveSubscriptionSID( sub->sid, service ); + HandleUnlock(); --- libupnp4-1.8.0~svn20100507.orig/debian/patches/zz-libupnp-3-4-coexist.patch +++ libupnp4-1.8.0~svn20100507/debian/patches/zz-libupnp-3-4-coexist.patch @@ -0,0 +1,179 @@ +Description: Rename libs to libupnp4, libixml4 and libthreadutil4, + to allow co-installing libupnp3 and libupnp4. +Author: Nick Leverton + +Index: libupnp4-1.8.0~svn20100425/threadutil/Makefile.am +=================================================================== +--- libupnp4-1.8.0~svn20100425.orig/threadutil/Makefile.am 2010-04-25 20:50:54.000000000 +0100 ++++ libupnp4-1.8.0~svn20100425/threadutil/Makefile.am 2010-04-25 20:50:56.000000000 +0100 +@@ -14,11 +14,11 @@ + endif + + +-lib_LTLIBRARIES = libthreadutil.la ++lib_LTLIBRARIES = libthreadutil4.la + +-libthreadutil_la_LDFLAGS = -version-info $(LT_VERSION_THREADUTIL) ++libthreadutil4_la_LDFLAGS = -version-info $(LT_VERSION_THREADUTIL) + +-libthreadutil_la_SOURCES = \ ++libthreadutil4_la_SOURCES = \ + src/FreeList.c src/LinkedList.c \ + src/ThreadPool.c src/TimerThread.c + +Index: libupnp4-1.8.0~svn20100425/libupnp.pc.in +=================================================================== +--- libupnp4-1.8.0~svn20100425.orig/libupnp.pc.in 2010-04-25 20:50:54.000000000 +0100 ++++ libupnp4-1.8.0~svn20100425/libupnp.pc.in 2010-04-25 20:50:56.000000000 +0100 +@@ -6,6 +6,6 @@ + Name: libupnp + Description: Linux SDK for UPnP Devices + Version: @VERSION@ +-Libs: @PTHREAD_LIBS@ -L${libdir} -lupnp -lthreadutil -lixml ++Libs: @PTHREAD_LIBS@ -L${libdir} -lupnp4 -lthreadutil4 -lixml4 + Cflags: @PTHREAD_CFLAGS@ -I${includedir}/upnp + +Index: libupnp4-1.8.0~svn20100425/ixml/Makefile.am +=================================================================== +--- libupnp4-1.8.0~svn20100425.orig/ixml/Makefile.am 2010-04-25 20:50:54.000000000 +0100 ++++ libupnp4-1.8.0~svn20100425/ixml/Makefile.am 2010-04-25 20:50:56.000000000 +0100 +@@ -10,7 +10,7 @@ + AM_CPPFLAGS = -I$(srcdir)/inc -I$(srcdir)/src/inc + AM_CFLAGS = + +-LDADD = libixml.la ++LDADD = libixml4.la + + if ENABLE_DEBUG + AM_CPPFLAGS += -DDEBUG +@@ -18,12 +18,12 @@ + AM_CPPFLAGS += -DNDEBUG + endif + +-lib_LTLIBRARIES = libixml.la ++lib_LTLIBRARIES = libixml4.la + +-libixml_la_LDFLAGS = -version-info $(LT_VERSION_IXML) \ ++libixml4_la_LDFLAGS = -version-info $(LT_VERSION_IXML) \ + -export-symbols-regex '^ixml.*' + +-libixml_la_SOURCES = \ ++libixml4_la_SOURCES = \ + src/attr.c \ + src/document.c \ + src/element.c \ +Index: libupnp4-1.8.0~svn20100425/upnp/Makefile.am +=================================================================== +--- libupnp4-1.8.0~svn20100425.orig/upnp/Makefile.am 2010-04-25 20:50:54.000000000 +0100 ++++ libupnp4-1.8.0~svn20100425/upnp/Makefile.am 2010-04-25 20:50:56.000000000 +0100 +@@ -12,9 +12,9 @@ + -I$(top_srcdir)/ixml/inc + + LDADD = \ +- libupnp.la \ +- $(top_builddir)/threadutil/libthreadutil.la \ +- $(top_builddir)/ixml/libixml.la ++ libupnp4.la \ ++ $(top_builddir)/threadutil/libthreadutil4.la \ ++ $(top_builddir)/ixml/libixml4.la + + + upnpincludedir = $(includedir)/upnp +@@ -40,17 +40,17 @@ + endif + + +-lib_LTLIBRARIES = libupnp.la ++lib_LTLIBRARIES = libupnp4.la + +-libupnp_la_CPPFLAGS = $(AM_CPPFLAGS) -I$(srcdir)/src/inc ++libupnp4_la_CPPFLAGS = $(AM_CPPFLAGS) -I$(srcdir)/src/inc + +-libupnp_la_LDFLAGS = \ ++libupnp4_la_LDFLAGS = \ + -version-info $(LT_VERSION_UPNP) \ + -export-symbols-regex '^Upnp.*' \ +- $(top_builddir)/threadutil/libthreadutil.la \ +- $(top_builddir)/ixml/libixml.la ++ $(top_builddir)/threadutil/libthreadutil4.la \ ++ $(top_builddir)/ixml/libixml4.la + +-libupnp_la_SOURCES = \ ++libupnp4_la_SOURCES = \ + src/inc/config.h \ + src/inc/client_table.h \ + src/inc/ClientSubscription.h \ +@@ -88,7 +88,7 @@ + src/inc/webserver.h + + # ssdp +-libupnp_la_SOURCES += \ ++libupnp4_la_SOURCES += \ + src/ssdp/ssdp_ResultData.c \ + src/ssdp/ssdp_ResultData.h \ + src/ssdp/ssdp_device.c \ +@@ -96,13 +96,13 @@ + src/ssdp/ssdp_server.c + + # soap +-libupnp_la_SOURCES += \ ++libupnp4_la_SOURCES += \ + src/soap/soap_device.c \ + src/soap/soap_ctrlpt.c \ + src/soap/soap_common.c + + # genlib +-libupnp_la_SOURCES += \ ++libupnp4_la_SOURCES += \ + src/genlib/miniserver/miniserver.c \ + src/genlib/client_table/client_table.c \ + src/genlib/client_table/ClientSubscription.c \ +@@ -120,13 +120,13 @@ + src/genlib/net/uri/uri.c + + # gena +-libupnp_la_SOURCES += \ ++libupnp4_la_SOURCES += \ + src/gena/gena_device.c \ + src/gena/gena_ctrlpt.c \ + src/gena/gena_callback2.c + + # api +-libupnp_la_SOURCES += \ ++libupnp4_la_SOURCES += \ + src/api/ActionComplete.c \ + src/api/ActionRequest.c \ + src/api/Discovery.c \ +@@ -140,27 +140,27 @@ + src/api/upnpapi.c + + if ENABLE_TOOLS +-libupnp_la_SOURCES += src/api/upnptools.c ++libupnp4_la_SOURCES += src/api/upnptools.c + endif + + if ENABLE_DEBUG +-libupnp_la_SOURCES += src/api/upnpdebug.c ++libupnp4_la_SOURCES += src/api/upnpdebug.c + endif + + + # uuid +-libupnp_la_SOURCES += \ ++libupnp4_la_SOURCES += \ + src/uuid/md5.c \ + src/uuid/sysdep.c \ + src/uuid/uuid.c + + + # urlconfig +-libupnp_la_SOURCES += src/urlconfig/urlconfig.c ++libupnp4_la_SOURCES += src/urlconfig/urlconfig.c + + + # inet_pton (needed on Win32, compiles to nothing elsewhere) +-libupnp_la_SOURCES += \ ++libupnp4_la_SOURCES += \ + src/inet_pton.c \ + src/inc/inet_pton.h + --- libupnp4-1.8.0~svn20100507.orig/debian/patches/07-neaten-debug.patch +++ libupnp4-1.8.0~svn20100507/debian/patches/07-neaten-debug.patch @@ -0,0 +1,708 @@ +Description: Neaten debugging so it's safe to leave it compiled in: + * Don't keep pointers to passed-in filenames, they might have been temporaries. + * Replace some anonymous comparisons by the appropriate enum name. + * Replace big file+line banner by a line-based format including timestamp, + and add/remove newlines or white space where appropriate. + * Comment out the noisy "Adding a string" prints from the debug. + * Remove print_http_headers() which wrote to stdout, they are already + logged via UpnpPrintf from everywhere that called print_http_headers(). +Author: Nick Leverton + +Index: libupnp4-1.8.0~svn20100425/upnp/src/genlib/net/http/httpparser.c +=================================================================== +--- libupnp4-1.8.0~svn20100425.orig/upnp/src/genlib/net/http/httpparser.c 2010-04-25 20:42:19.000000000 +0100 ++++ libupnp4-1.8.0~svn20100425/upnp/src/genlib/net/http/httpparser.c 2010-04-25 20:42:35.000000000 +0100 +@@ -2509,38 +2509,3 @@ + return index == -1 ? NULL : Http_Method_Table[index].name; + } + +- +-#ifdef DEBUG +-void print_http_headers(http_message_t *hmsg) +-{ +- ListNode *node; +- /* NNS: dlist_node *node; */ +- http_header_t *header; +- +- /* print start line */ +- if( hmsg->is_request ) { +- printf( "method = %d, version = %d.%d, url = %.*s\n", +- hmsg->method, hmsg->major_version, hmsg->minor_version, +- (int)hmsg->uri.pathquery.size, hmsg->uri.pathquery.buff); +- } else { +- printf( "resp status = %d, version = %d.%d, status msg = %.*s\n", +- hmsg->status_code, hmsg->major_version, hmsg->minor_version, +- (int)hmsg->status_msg.length, hmsg->status_msg.buf); +- } +- +- /* print headers */ +- node = ListHead( &hmsg->headers ); +- /* NNS: node = dlist_first_node( &hmsg->headers ); */ +- while( node != NULL ) { +- header = ( http_header_t * ) node->item; +- /* NNS: header = (http_header_t *)node->data; */ +- printf( "hdr name: %.*s, value: %.*s\n", +- (int)header->name.length, header->name.buf, +- (int)header->value.length, header->value.buf ); +- +- node = ListNext( &hmsg->headers, node ); +- /* NNS: node = dlist_next( &hmsg->headers, node ); */ +- } +-} +-#endif +- +Index: libupnp4-1.8.0~svn20100425/upnp/src/api/upnpdebug.c +=================================================================== +--- libupnp4-1.8.0~svn20100425.orig/upnp/src/api/upnpdebug.c 2010-04-25 20:42:19.000000000 +0100 ++++ libupnp4-1.8.0~svn20100425/upnp/src/api/upnpdebug.c 2010-04-25 20:42:35.000000000 +0100 +@@ -38,6 +38,7 @@ + #include "upnpdebug.h" + + ++#include + #include + #include + #include +@@ -58,10 +59,10 @@ + static FILE *InfoFileHnd = NULL; + + /*! Name of the error file */ +-static const char *errFileName = "IUpnpErrFile.txt"; ++static const char *errFileName = strdup("IUpnpErrFile.txt"); + + /*! Name of the info file */ +-static const char *infoFileName = "IUpnpInfoFile.txt"; ++static const char *infoFileName = strdup("IUpnpInfoFile.txt"); + + + #ifdef DEBUG +@@ -71,10 +72,10 @@ + { + ithread_mutex_init(&GlobalDebugMutex, NULL); + if(DEBUG_TARGET == 1) { +- if((ErrFileHnd = fopen( errFileName, "a")) == NULL) { ++ if( errFileName && *errFileName && (ErrFileHnd = fopen( errFileName, "a")) == NULL) { + return -1; + } +- if((InfoFileHnd = fopen( infoFileName, "a")) == NULL) { ++ if( infoFileName && *infoFileName && (InfoFileHnd = fopen( infoFileName, "a")) == NULL) { + return -1; + } + } +@@ -91,10 +92,14 @@ + void UpnpCloseLog(void) + { + if (DEBUG_TARGET == 1) { +- fflush(ErrFileHnd); +- fflush(InfoFileHnd); +- fclose(ErrFileHnd); +- fclose(InfoFileHnd); ++ if( ErrFileHnd ) { ++ fflush(ErrFileHnd); ++ fclose(ErrFileHnd); ++ } ++ if( InfoFileHnd ) { ++ fflush(InfoFileHnd); ++ fclose(InfoFileHnd); ++ } + } + ithread_mutex_destroy(&GlobalDebugMutex); + } +@@ -104,11 +109,19 @@ + const char *ErrFileName, + const char *InfoFileName) + { ++ if( errFileName ) { ++ free((void*)errFileName); ++ errFileName = NULL; ++ } + if (ErrFileName) { +- errFileName = ErrFileName; ++ errFileName = strdup(ErrFileName); ++ } ++ if( infoFileName ) { ++ free((void*)infoFileName); ++ infoFileName = NULL; + } + if (InfoFileName) { +- infoFileName = InfoFileName; ++ infoFileName = strdup(InfoFileName); + } + } + +@@ -154,25 +167,28 @@ + } + vfprintf(stdout, FmtStr, ArgList); + fflush(stdout); +- } else if (DLevel == 0) { +- if (DbgFileName) { +- UpnpDisplayFileAndLine(ErrFileHnd, DbgFileName, DbgLineNo); +- } +- vfprintf(ErrFileHnd, FmtStr, ArgList); +- fflush(ErrFileHnd); + } else { +- if (DbgFileName) { +- UpnpDisplayFileAndLine(InfoFileHnd, DbgFileName, DbgLineNo); ++ if (ErrFileHnd && DLevel == UPNP_CRITICAL) { ++ if (DbgFileName) { ++ UpnpDisplayFileAndLine(ErrFileHnd, DbgFileName, DbgLineNo); ++ } ++ vfprintf(ErrFileHnd, FmtStr, ArgList); ++ fflush(ErrFileHnd); ++ } ++ if (InfoFileHnd) { ++ if (DbgFileName) { ++ UpnpDisplayFileAndLine(InfoFileHnd, DbgFileName, DbgLineNo); ++ } ++ vfprintf(InfoFileHnd, FmtStr, ArgList); ++ fflush(InfoFileHnd); + } +- vfprintf(InfoFileHnd, FmtStr, ArgList); +- fflush(InfoFileHnd); + } + va_end(ArgList); + ithread_mutex_unlock(&GlobalDebugMutex); + } + + +-FILE *GetDebugFile(Upnp_LogLevel DLevel, Dbg_Module Module) ++FILE *UpnpGetDebugFile(Upnp_LogLevel DLevel, Dbg_Module Module) + { + FILE *ret; + +@@ -182,7 +198,7 @@ + + if (!DEBUG_TARGET) { + ret = stdout; +- } else if (DLevel == 0) { ++ } else if (DLevel == UPNP_CRITICAL) { + ret = ErrFileHnd; + } else { + ret = InfoFileHnd; +@@ -197,20 +213,13 @@ + const char *DbgFileName, + int DbgLineNo) + { +-#define NLINES 2 +-#define MAX_LINE_SIZE 512 +-#define NUMBER_OF_STARS 80 +- const char *lines[NLINES]; +- char buf[NLINES][MAX_LINE_SIZE]; +- int i; +- +- /* Initialize the pointer array */ +- for (i = 0; i < NLINES; i++) { +- lines[i] = buf[i]; +- } +- +- /* Put the debug lines in the buffer */ +- sprintf(buf[0], "DEBUG - THREAD ID: 0x%lX", ++ time_t timenow = time(NULL); ++ struct tm localtimenow; ++ char timeprint[20]; /* "YYYY-MM-DD HH:MM:SS" */ ++ ++ localtime_r(&timenow, &localtimenow); ++ strftime(timeprint, sizeof(timeprint), "%F %T", &localtimenow); ++ fprintf(fd, "%s 0x%lX ", timeprint, + #ifdef WIN32 + (unsigned long int)ithread_self().p + #else +@@ -218,72 +227,16 @@ + #endif + ); + if (DbgFileName) { +- sprintf(buf[1], +- "FILE: %s, LINE: %d", +- DbgFileName, ++ char *filepath = strdup(DbgFileName); ++ fprintf(fd, "%s:%d ", ++ basename(filepath), + DbgLineNo); ++ free(filepath); + } +- +- /* Show the lines centered */ +- UpnpDisplayBanner(fd, lines, NLINES, NUMBER_OF_STARS); + fflush(fd); + } + + +-void UpnpDisplayBanner( +- FILE * fd, +- const char **lines, +- size_t size, +- int starLength) +-{ +- int leftMarginLength = starLength / 2 + 1; +- int rightMarginLength = starLength / 2 + 1; +- int i = 0; +- int LineSize = 0; +- int starLengthMinus2 = starLength - 2; +- +- char *leftMargin = ( char * )malloc( leftMarginLength ); +- char *rightMargin = ( char * )malloc( rightMarginLength ); +- char *stars = ( char * )malloc( starLength + 1 ); +- char *currentLine = ( char * )malloc( starLength + 1 ); +- const char *line = NULL; +- +- memset( stars, '*', starLength ); +- stars[starLength] = 0; +- memset( leftMargin, 0, leftMarginLength ); +- memset( rightMargin, 0, rightMarginLength ); +- fprintf( fd, "\n%s\n", stars ); +- for( i = 0; i < size; i++ ) { +- LineSize = strlen( lines[i] ); +- line = lines[i]; +- while( LineSize > starLengthMinus2 ) { +- memcpy( currentLine, line, starLengthMinus2 ); +- currentLine[starLengthMinus2] = 0; +- fprintf( fd, "*%s*\n", currentLine ); +- LineSize -= starLengthMinus2; +- line += starLengthMinus2; +- } +- leftMarginLength = (starLengthMinus2 - LineSize)/2; +- if( LineSize % 2 == 0 ) { +- rightMarginLength = leftMarginLength; +- } else { +- rightMarginLength = leftMarginLength + 1; +- } +- memset( leftMargin, ' ', leftMarginLength ); +- memset( rightMargin, ' ', rightMarginLength ); +- leftMargin[leftMarginLength] = 0; +- rightMargin[rightMarginLength] = 0; +- fprintf( fd, "*%s%s%s*\n", leftMargin, line, rightMargin ); +- } +- fprintf(fd, "%s\n\n", stars); +- +- free(currentLine); +- free(stars); +- free(rightMargin); +- free(leftMargin); +-} +- +- + void PrintThreadPoolStats( + ThreadPool *tp, + const char *DbgFileName, +Index: libupnp4-1.8.0~svn20100425/upnp/src/gena/gena_ctrlpt.c +=================================================================== +--- libupnp4-1.8.0~svn20100425.orig/upnp/src/gena/gena_ctrlpt.c 2010-04-25 20:42:19.000000000 +0100 ++++ libupnp4-1.8.0~svn20100425/upnp/src/gena/gena_ctrlpt.c 2010-04-25 20:42:22.000000000 +0100 +@@ -75,12 +75,12 @@ + int errCode = 0; + + if (AUTO_RENEW_TIME == 0) { +- UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__, "GENA SUB EXPIRED"); ++ UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__, "GENA SUB EXPIRED\n"); + UpnpEventSubscribe_set_ErrCode(sub_struct, UPNP_E_SUCCESS); + send_callback = 1; + eventType = UPNP_EVENT_SUBSCRIPTION_EXPIRED; + } else { +- UpnpPrintf(UPNP_INFO, GENA, __FILE__, __LINE__, "GENA AUTO RENEW"); ++ UpnpPrintf(UPNP_INFO, GENA, __FILE__, __LINE__, "GENA AUTO RENEW\n"); + timeout = UpnpEventSubscribe_get_TimeOut(sub_struct); + errCode = genaRenewSubscription( + event->handle, +@@ -103,7 +103,7 @@ + free_upnp_timeout(event); + goto end_function; + } +- UpnpPrintf(UPNP_INFO, GENA, __FILE__, __LINE__, "HANDLE IS VALID"); ++ UpnpPrintf(UPNP_INFO, GENA, __FILE__, __LINE__, "HANDLE IS VALID\n"); + + // make callback + callback_fun = handle_info->Callback; +@@ -505,7 +505,7 @@ + UpnpString *EventURL = UpnpString_new(); + struct Handle_Info *handle_info; + +- UpnpPrintf(UPNP_INFO, GENA, __FILE__, __LINE__, "GENA SUBSCRIBE BEGIN"); ++ UpnpPrintf(UPNP_INFO, GENA, __FILE__, __LINE__, "GENA SUBSCRIBE BEGIN\n"); + + UpnpString_clear(out_sid); + +@@ -610,7 +610,7 @@ + free_upnp_timeout((upnp_timeout *)tempJob.arg); + } + +- UpnpPrintf(UPNP_INFO, GENA, __FILE__, __LINE__, "REMOVED AUTO RENEW EVENT"); ++ UpnpPrintf(UPNP_INFO, GENA, __FILE__, __LINE__, "REMOVED AUTO RENEW EVENT\n"); + + GenlibClientSubscription_set_RenewEventId(sub, -1); + GenlibClientSubscription_assign(sub_copy, sub); +Index: libupnp4-1.8.0~svn20100425/upnp/src/inc/gena.h +=================================================================== +--- libupnp4-1.8.0~svn20100425.orig/upnp/src/inc/gena.h 2010-04-25 20:42:19.000000000 +0100 ++++ libupnp4-1.8.0~svn20100425/upnp/src/inc/gena.h 2010-04-25 20:42:22.000000000 +0100 +@@ -121,10 +121,10 @@ + */ + #define SubscribeLock() \ + UpnpPrintf(UPNP_INFO, GENA, __FILE__, __LINE__, \ +- "Trying Subscribe Lock"); \ ++ "Trying Subscribe Lock\n"); \ + ithread_mutex_lock(&GlobalClientSubscribeMutex); \ + UpnpPrintf(UPNP_INFO, GENA, __FILE__, __LINE__, \ +- "Subscribe Lock"); ++ "Subscribe Lock\n"); + + + /*! +@@ -132,10 +132,10 @@ + */ + #define SubscribeUnlock() \ + UpnpPrintf(UPNP_INFO, GENA, __FILE__, __LINE__, \ +- "Trying Subscribe UnLock"); \ ++ "Trying Subscribe UnLock\n"); \ + ithread_mutex_unlock(&GlobalClientSubscribeMutex); \ + UpnpPrintf(UPNP_INFO, GENA, __FILE__, __LINE__, \ +- "Subscribe UnLock"); ++ "Subscribe UnLock\n"); + + + /*! +Index: libupnp4-1.8.0~svn20100425/upnp/src/inc/upnpapi.h +=================================================================== +--- libupnp4-1.8.0~svn20100425.orig/upnp/src/inc/upnpapi.h 2010-04-25 20:42:19.000000000 +0100 ++++ libupnp4-1.8.0~svn20100425/upnp/src/inc/upnpapi.h 2010-04-25 20:42:22.000000000 +0100 +@@ -131,21 +131,21 @@ + + + #define HandleWriteLock() \ +- UpnpPrintf(UPNP_INFO, API, __FILE__, __LINE__, "Trying a write lock"); \ ++ UpnpPrintf(UPNP_INFO, API, __FILE__, __LINE__, "Trying a write lock\n"); \ + ithread_rwlock_wrlock(&GlobalHndRWLock); \ +- UpnpPrintf(UPNP_INFO, API, __FILE__, __LINE__, "Write lock acquired"); ++ UpnpPrintf(UPNP_INFO, API, __FILE__, __LINE__, "Write lock acquired\n"); + + + #define HandleReadLock() \ +- UpnpPrintf(UPNP_INFO, API, __FILE__, __LINE__, "Trying a read lock"); \ ++ UpnpPrintf(UPNP_INFO, API, __FILE__, __LINE__, "Trying a read lock\n"); \ + ithread_rwlock_rdlock(&GlobalHndRWLock); \ +- UpnpPrintf(UPNP_INFO, API, __FILE__, __LINE__, "Read lock acquired"); ++ UpnpPrintf(UPNP_INFO, API, __FILE__, __LINE__, "Read lock acquired\n"); + + + #define HandleUnlock() \ +- UpnpPrintf(UPNP_INFO, API,__FILE__, __LINE__, "Trying Unlock"); \ ++ UpnpPrintf(UPNP_INFO, API,__FILE__, __LINE__, "Trying Unlock\n"); \ + ithread_rwlock_unlock(&GlobalHndRWLock); \ +- UpnpPrintf(UPNP_INFO, API, __FILE__, __LINE__, "Unlocked rwlock"); ++ UpnpPrintf(UPNP_INFO, API, __FILE__, __LINE__, "Unlocked rwlock\n"); + + + /*! +Index: libupnp4-1.8.0~svn20100425/upnp/src/soap/soap_device.c +=================================================================== +--- libupnp4-1.8.0~svn20100425.orig/upnp/src/soap/soap_device.c 2010-04-25 20:42:19.000000000 +0100 ++++ libupnp4-1.8.0~svn20100425/upnp/src/soap/soap_device.c 2010-04-25 20:42:22.000000000 +0100 +@@ -359,7 +359,7 @@ + IXML_NodeList *nl = NULL; + + UpnpPrintf( UPNP_INFO, SOAP, __FILE__, __LINE__, +- "get_action_node(): node name =%s\n ", NodeName ); ++ "get_action_node(): node name =%s\n", NodeName ); + + *RespNode = NULL; + +Index: libupnp4-1.8.0~svn20100425/upnp/src/gena/gena_device.c +=================================================================== +--- libupnp4-1.8.0~svn20100425.orig/upnp/src/gena/gena_device.c 2010-04-25 20:42:19.000000000 +0100 ++++ libupnp4-1.8.0~svn20100425/upnp/src/gena/gena_device.c 2010-04-25 20:42:35.000000000 +0100 +@@ -452,7 +452,7 @@ + + ExitFunction: + if (headers == NULL) { +- UpnpPrintf(UPNP_ALL, GENA, __FILE__, line, ++ UpnpPrintf(UPNP_ALL, GENA, __FILE__, line ? line : __LINE__, + "AllocGenaHeaders(): Error UPNP_E_OUTOF_MEMORY\n"); + } + return headers; +@@ -484,7 +484,7 @@ + ThreadPoolJob job; + + UpnpPrintf(UPNP_INFO, GENA, __FILE__, __LINE__, +- "GENA BEGIN INITIAL NOTIFY"); ++ "GENA BEGIN INITIAL NOTIFY\n"); + + reference_count = (int *)malloc(sizeof (int)); + if (reference_count == NULL) { +@@ -526,7 +526,7 @@ + goto ExitFunction; + } + UpnpPrintf(UPNP_INFO, GENA, __FILE__, __LINE__, +- "FOUND SERVICE IN INIT NOTFY: UDN %s, ServID: %s", ++ "FOUND SERVICE IN INIT NOTFY: UDN %s, ServID: %s\n", + UDN, servId); + + sub = GetSubscriptionSID(sid, service); +@@ -536,7 +536,7 @@ + goto ExitFunction; + } + UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__, +- "FOUND SUBSCRIPTION IN INIT NOTIFY: SID %s", sid); ++ "FOUND SUBSCRIPTION IN INIT NOTIFY: SID %s\n", sid); + sub->active = 1; + + if (var_count <= 0) { +@@ -551,7 +551,7 @@ + goto ExitFunction; + } + UpnpPrintf(UPNP_INFO, GENA, __FILE__, __LINE__, +- "GENERATED PROPERTY SET IN INIT NOTIFY: %s", ++ "GENERATED PROPERTY SET IN INIT NOTIFY: %s\n", + propertySet); + + headers = AllocGenaHeaders(propertySet); +@@ -606,8 +606,8 @@ + + HandleUnlock(); + +- UpnpPrintf(UPNP_INFO, GENA, __FILE__, line, +- "GENA END INITIAL NOTIFY, ret = %d", ++ UpnpPrintf(UPNP_INFO, GENA, __FILE__, line ? line : __LINE__, ++ "GENA END INITIAL NOTIFY, ret = %d\n", + ret); + + return ret; +@@ -637,7 +637,7 @@ + ThreadPoolJob job; + + UpnpPrintf(UPNP_INFO, GENA, __FILE__, __LINE__, +- "GENA BEGIN INITIAL NOTIFY EXT"); ++ "GENA BEGIN INITIAL NOTIFY EXT\n"); + + reference_count = (int *)malloc(sizeof (int)); + if (reference_count == NULL) { +@@ -679,7 +679,7 @@ + goto ExitFunction; + } + UpnpPrintf(UPNP_INFO, GENA, __FILE__, __LINE__, +- "FOUND SERVICE IN INIT NOTFY EXT: UDN %s, ServID: %s", ++ "FOUND SERVICE IN INIT NOTFY EXT: UDN %s, ServID: %s\n", + UDN, servId); + + sub = GetSubscriptionSID(sid, service); +@@ -689,7 +689,7 @@ + goto ExitFunction; + } + UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__, +- "FOUND SUBSCRIPTION IN INIT NOTIFY EXT: SID %s", sid); ++ "FOUND SUBSCRIPTION IN INIT NOTIFY EXT: SID %s\n", sid); + sub->active = 1; + + if (PropSet == 0) { +@@ -705,7 +705,7 @@ + goto ExitFunction; + } + UpnpPrintf(UPNP_INFO, GENA, __FILE__, __LINE__, +- "GENERATED PROPERTY SET IN INIT EXT NOTIFY: %s", ++ "GENERATED PROPERTY SET IN INIT EXT NOTIFY: %s\n", + propertySet); + + headers = AllocGenaHeaders(propertySet); +@@ -760,8 +760,8 @@ + + HandleUnlock(); + +- UpnpPrintf(UPNP_INFO, GENA, __FILE__, line, +- "GENA END INITIAL NOTIFY EXT, ret = %d", ++ UpnpPrintf(UPNP_INFO, GENA, __FILE__, line ? line : __LINE__, ++ "GENA END INITIAL NOTIFY EXT, ret = %d\n", + ret); + + return ret; +@@ -790,7 +790,7 @@ + ThreadPoolJob job; + + UpnpPrintf(UPNP_INFO, GENA, __FILE__, __LINE__, +- "GENA BEGIN NOTIFY ALL EXT"); ++ "GENA BEGIN NOTIFY ALL EXT\n"); + + reference_count = (int *)malloc(sizeof (int)); + if (reference_count == NULL) { +@@ -824,7 +824,7 @@ + goto ExitFunction; + } + UpnpPrintf(UPNP_INFO, GENA, __FILE__, __LINE__, +- "GENERATED PROPERTY SET IN EXT NOTIFY: %s", ++ "GENERATED PROPERTY SET IN EXT NOTIFY: %s\n", + propertySet); + + headers = AllocGenaHeaders(propertySet); +@@ -897,8 +897,8 @@ + + HandleUnlock(); + +- UpnpPrintf(UPNP_INFO, GENA, __FILE__, line, +- "GENA END NOTIFY ALL EXT, ret = %d", ++ UpnpPrintf(UPNP_INFO, GENA, __FILE__, line ? line : __LINE__, ++ "GENA END NOTIFY ALL EXT, ret = %d\n", + ret); + + return ret; +@@ -929,7 +929,7 @@ + ThreadPoolJob job; + + UpnpPrintf(UPNP_INFO, GENA, __FILE__, __LINE__, +- "GENA BEGIN NOTIFY ALL"); ++ "GENA BEGIN NOTIFY ALL\n"); + + reference_count = (int *)malloc(sizeof (int)); + if (reference_count == NULL) { +@@ -962,7 +962,7 @@ + goto ExitFunction; + } + UpnpPrintf(UPNP_INFO, GENA, __FILE__, __LINE__, +- "GENERATED PROPERTY SET IN EXT NOTIFY: %s", ++ "GENERATED PROPERTY SET IN EXT NOTIFY: %s\n", + propertySet); + + headers = AllocGenaHeaders(propertySet); +@@ -1036,8 +1036,8 @@ + + HandleUnlock(); + +- UpnpPrintf(UPNP_INFO, GENA, __FILE__, line, +- "GENA END NOTIFY ALL, ret = %d", ++ UpnpPrintf(UPNP_INFO, GENA, __FILE__, line ? line : __LINE__, ++ "GENA END NOTIFY ALL, ret = %d\n", + ret); + + return ret; +@@ -1258,7 +1258,7 @@ + } + + UpnpPrintf(UPNP_INFO, GENA, __FILE__, __LINE__, +- "Subscription Request: Number of Subscriptions already %d\n " ++ "Subscription Request: Number of Subscriptions already %d, " + "Max Subscriptions allowed: %d\n", + service->TotalSubscriptions, + handle_info->MaxSubscriptions); +@@ -1430,7 +1430,7 @@ + } + + UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__, +- "Renew request: Number of subscriptions already: %d\n " ++ "Renew request: Number of subscriptions already: %d, " + "Max Subscriptions allowed:%d\n", + service->TotalSubscriptions, + handle_info->MaxSubscriptions ); +Index: libupnp4-1.8.0~svn20100425/upnp/src/genlib/net/http/httpreadwrite.c +=================================================================== +--- libupnp4-1.8.0~svn20100425.orig/upnp/src/genlib/net/http/httpreadwrite.c 2010-04-25 20:42:19.000000000 +0100 ++++ libupnp4-1.8.0~svn20100425/upnp/src/genlib/net/http/httpreadwrite.c 2010-04-25 20:42:35.000000000 +0100 +@@ -251,7 +251,6 @@ + UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__, + "<<< (RECVD) <<<\n%s\n-----------------\n", + parser->msg.msg.buf ); +- print_http_headers( &parser->msg ); + if (parser->content_length > (unsigned int)g_maxContentLength) { + *http_error_code = HTTP_REQ_ENTITY_TOO_LARGE; + line = __LINE__; +@@ -280,7 +279,6 @@ + UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__, + "<<< (RECVD) <<<\n%s\n-----------------\n", + parser->msg.msg.buf ); +- print_http_headers(&parser->msg); + line = __LINE__; + ret = 0; + goto ExitFunction; +@@ -301,7 +299,7 @@ + + ExitFunction: + if (ret != UPNP_E_SUCCESS) { +- UpnpPrintf(UPNP_ALL, HTTP, __FILE__, line, ++ UpnpPrintf(UPNP_INFO, HTTP, __FILE__, line, + "(http_RecvMessage): Error %d, http_error_code = %d.\n", + ret, + *http_error_code); +@@ -685,7 +683,6 @@ + } + + UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__, "Response\n" ); +- print_http_headers( &response.msg ); + + // optional content-type + if( content_type ) { +@@ -1838,7 +1835,7 @@ + // C string + s = ( char * )va_arg( argp, char * ); + assert( s ); +- UpnpPrintf(UPNP_ALL,HTTP,__FILE__,__LINE__,"Adding a string : %s\n", s); ++ /* UpnpPrintf(UPNP_ALL,HTTP,__FILE__,__LINE__,"Adding a string : %s\n", s); */ + if( membuffer_append( buf, s, strlen( s ) ) != 0 ) { + goto error_handler; + } +@@ -1865,8 +1862,8 @@ + // mem buffer + s = ( char * )va_arg( argp, char * ); + +- UpnpPrintf(UPNP_ALL,HTTP,__FILE__,__LINE__, +- "Adding a char Buffer starting with: %c\n", s[0]); ++ /* UpnpPrintf(UPNP_ALL,HTTP,__FILE__,__LINE__, ++ "Adding a char Buffer starting with: %c\n", s[0]); */ + assert( s ); + length = ( size_t ) va_arg( argp, size_t ); + if( membuffer_append( buf, s, length ) != 0 ) { +Index: libupnp4-1.8.0~svn20100425/upnp/src/genlib/net/http/webserver.c +=================================================================== +--- libupnp4-1.8.0~svn20100425.orig/upnp/src/genlib/net/http/webserver.c 2010-04-25 20:42:19.000000000 +0100 ++++ libupnp4-1.8.0~svn20100425/upnp/src/genlib/net/http/webserver.c 2010-04-25 20:42:22.000000000 +0100 +@@ -1219,8 +1219,6 @@ + size_t dummy; + const char *extra_headers; + +- print_http_headers( req ); +- + url = &req->uri; + assert( req->method == HTTPMETHOD_GET || + req->method == HTTPMETHOD_HEAD +@@ -1598,7 +1596,6 @@ + UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__, + "<<< (RECVD) <<<\n%s\n-----------------\n", + parser->msg.msg.buf ); +- print_http_headers( &parser->msg ); + parser->position = POS_COMPLETE; + } else { + // partial msg +Index: libupnp4-1.8.0~svn20100425/upnp/src/inc/httpparser.h +=================================================================== +--- libupnp4-1.8.0~svn20100425.orig/upnp/src/inc/httpparser.h 2010-04-25 20:42:19.000000000 +0100 ++++ libupnp4-1.8.0~svn20100425/upnp/src/inc/httpparser.h 2010-04-25 20:42:22.000000000 +0100 +@@ -485,17 +485,6 @@ + const char* method_to_str( IN http_method_t method ); + + +-/*! +- * \brief Print the HTTP headers. +- */ +-#ifdef DEBUG +-void print_http_headers( +- /*! [in] HTTP Message object. */ +- http_message_t *hmsg ); +-#else +-static UPNP_INLINE void print_http_headers(http_message_t *hmsg) {} +-#endif +- + #ifdef __cplusplus + } /* extern "C" */ + #endif /* __cplusplus */ +Index: libupnp4-1.8.0~svn20100425/upnp/src/ssdp/ssdp_server.c +=================================================================== +--- libupnp4-1.8.0~svn20100425.orig/upnp/src/ssdp/ssdp_server.c 2010-04-25 20:42:19.000000000 +0100 ++++ libupnp4-1.8.0~svn20100425/upnp/src/ssdp/ssdp_server.c 2010-04-25 20:42:22.000000000 +0100 +@@ -141,11 +141,11 @@ + /* parse the device list and send advertisements/replies */ + for (i = 0;; i++) { + UpnpPrintf(UPNP_ALL, API, __FILE__, __LINE__, +- "Entering new device list with i = %d\n\n", i); ++ "Entering new device list with i = %d\n", i); + tmpNode = ixmlNodeList_item(SInfo->DeviceList, i); + if (!tmpNode) { + UpnpPrintf(UPNP_ALL, API, __FILE__, __LINE__, +- "Exiting new device list with i = %d\n\n", i); ++ "Exiting new device list with i = %d\n", i); + break; + } + dbgStr = ixmlNode_getNodeName(tmpNode); --- libupnp4-1.8.0~svn20100507.orig/debian/patches/0001-Security-fix-for-CERT-issue-VU-922681.patch +++ libupnp4-1.8.0~svn20100507/debian/patches/0001-Security-fix-for-CERT-issue-VU-922681.patch @@ -0,0 +1,105 @@ +Fix for VU#922681 + +This includes fix for various CVEs by more or less backporting the whole unique_service_name() function from 1.6.18. + +CVE-2012-5961 Issue #1: Stack buffer overflow of Evt->UDN +CVE-2012-5958 Issue #2: Stack buffer overflow of Tempbuf +CVE-2012-5962 Issue #3: Stack buffer overflow of Evt->DeviceType +CVE-2012-5959 Issue #4: Stack buffer overflow of Event->UDN +CVE-2012-5960 Issue #8: Stack buffer overflow of Event->UDN +CVE-2012-5963 Issue #5: Stack buffer overflow of Event->UDN +CVE-2012-5964 Issue #6: Stack buffer overflow of Event->DeviceType +CVE-2012-5965 Issue #7: Stack buffer overflow of Event->DeviceType + +--- a/upnp/src/ssdp/ssdp_server.c ++++ b/upnp/src/ssdp/ssdp_server.c +@@ -416,7 +416,7 @@ int unique_service_name(IN char *cmd, IN + char *ptr2 = NULL; + char *ptr3 = NULL; + int CommandFound = 0; +- int length = 0; ++ size_t n = (size_t)0; + + if( ( TempPtr = strstr( cmd, "uuid:schemas" ) ) != NULL ) { + ptr1 = strstr( cmd, ":device" ); +@@ -433,16 +433,23 @@ int unique_service_name(IN char *cmd, IN + } + + if( ptr3 != NULL ) { +- sprintf( Evt->UDN, "uuid:%s", ptr3 + 1 ); ++ if (strlen("uuid:") + strlen(ptr3 + 1) >= sizeof Evt->UDN) ++ return -1; ++ snprintf(Evt->UDN, sizeof Evt->UDN, "uuid:%s", ptr3 + 1); + } else { + return -1; + } + + ptr1 = strstr( cmd, ":" ); + if( ptr1 != NULL ) { +- strncpy( TempBuf, ptr1, ptr3 - ptr1 ); +- TempBuf[ptr3 - ptr1] = '\0'; +- sprintf( Evt->DeviceType, "urn%s", TempBuf ); ++ n = (size_t)ptr3 - (size_t)ptr1; ++ n = n >= sizeof TempBuf ? sizeof TempBuf - 1 : n; ++ strncpy(TempBuf, ptr1, n); ++ TempBuf[n] = '\0'; ++ if (strlen("urn") + strlen(TempBuf) >= sizeof(Evt->DeviceType)) ++ return -1; ++ snprintf(Evt->DeviceType, sizeof(Evt->DeviceType), ++ "urn%s", TempBuf); + } else { + return -1; + } +@@ -451,10 +458,13 @@ int unique_service_name(IN char *cmd, IN + + if( ( TempPtr = strstr( cmd, "uuid" ) ) != NULL ) { + if( ( Ptr = strstr( cmd, "::" ) ) != NULL ) { +- strncpy( Evt->UDN, TempPtr, Ptr - TempPtr ); +- Evt->UDN[Ptr - TempPtr] = '\0'; ++ n = (size_t)Ptr - (size_t)TempPtr; ++ n = n >= sizeof Evt->UDN ? sizeof Evt->UDN - 1 : n; ++ strncpy(Evt->UDN, TempPtr, n); ++ Evt->UDN[n] = '\0'; + } else { +- strcpy( Evt->UDN, TempPtr ); ++ memset(Evt->UDN, 0, sizeof(Evt->UDN)); ++ strncpy(Evt->UDN, TempPtr, sizeof Evt->UDN - 1); + } + CommandFound = 1; + } +@@ -462,7 +472,9 @@ int unique_service_name(IN char *cmd, IN + if( strstr( cmd, "urn:" ) != NULL + && strstr( cmd, ":service:" ) != NULL ) { + if( ( TempPtr = strstr( cmd, "urn" ) ) != NULL ) { +- strcpy( Evt->ServiceType, TempPtr ); ++ memset(Evt->ServiceType, 0, sizeof Evt->ServiceType); ++ strncpy(Evt->ServiceType, TempPtr, ++ sizeof Evt->ServiceType - 1); + CommandFound = 1; + } + } +@@ -470,7 +482,9 @@ int unique_service_name(IN char *cmd, IN + if( strstr( cmd, "urn:" ) != NULL + && strstr( cmd, ":device:" ) != NULL ) { + if( ( TempPtr = strstr( cmd, "urn" ) ) != NULL ) { +- strcpy( Evt->DeviceType, TempPtr ); ++ memset(Evt->DeviceType, 0, sizeof Evt->DeviceType); ++ strncpy(Evt->DeviceType, TempPtr, ++ sizeof Evt->DeviceType - 1); + CommandFound = 1; + } + } +@@ -478,9 +492,10 @@ int unique_service_name(IN char *cmd, IN + if( ( TempPtr = strstr( cmd, "::upnp:rootdevice" ) ) != NULL ) { + /* Everything before "::upnp::rootdevice" is the UDN. */ + if( TempPtr != cmd ) { +- length = TempPtr - cmd; +- strncpy(Evt->UDN, cmd, length); +- Evt->UDN[length] = 0; ++ n = (size_t)TempPtr - (size_t)cmd; ++ n = n >= sizeof Evt->UDN ? sizeof Evt->UDN - 1 : n; ++ strncpy(Evt->UDN, cmd, n); ++ Evt->UDN[n] = 0; + CommandFound = 1; + } + } --- libupnp4-1.8.0~svn20100507.orig/debian/patches/12-debian-always-debug.patch +++ libupnp4-1.8.0~svn20100507/debian/patches/12-debian-always-debug.patch @@ -0,0 +1,20 @@ +Description: Don't write debug files by default if debug is compiled in. +Author: Nick Leverton + +Index: libupnp4-1.8.0~svn20100425/upnp/src/api/upnpdebug.c +=================================================================== +--- libupnp4-1.8.0~svn20100425.orig/upnp/src/api/upnpdebug.c 2010-04-25 21:09:04.000000000 +0100 ++++ libupnp4-1.8.0~svn20100425/upnp/src/api/upnpdebug.c 2010-04-25 21:09:08.000000000 +0100 +@@ -59,10 +59,10 @@ + static FILE *InfoFileHnd = NULL; + + /*! Name of the error file */ +-static const char *errFileName = strdup("IUpnpErrFile.txt"); ++static const char *errFileName = NULL; + + /*! Name of the info file */ +-static const char *infoFileName = strdup("IUpnpInfoFile.txt"); ++static const char *infoFileName = NULL; + + + #ifdef DEBUG --- libupnp4-1.8.0~svn20100507.orig/debian/patches/13-extra-debug.patch +++ libupnp4-1.8.0~svn20100507/debian/patches/13-extra-debug.patch @@ -0,0 +1,89 @@ +Description: extra debugging for alloc/free problems + +Index: libupnp4-1.8.0~svn20100401-1~20100412/upnp/src/genlib/net/http/httpreadwrite.c +=================================================================== +--- libupnp4-1.8.0~svn20100401-1~20100412.orig/upnp/src/genlib/net/http/httpreadwrite.c 2010-04-12 22:19:56.000000000 +0100 ++++ libupnp4-1.8.0~svn20100401-1~20100412/upnp/src/genlib/net/http/httpreadwrite.c 2010-04-12 22:19:56.000000000 +0100 +@@ -1835,7 +1835,7 @@ + // C string + s = ( char * )va_arg( argp, char * ); + assert( s ); +- /* UpnpPrintf(UPNP_ALL,HTTP,__FILE__,__LINE__,"Adding a string : %s\n", s); */ ++ UpnpPrintf(UPNP_ALL,HTTP,__FILE__,__LINE__,"Adding a string : %p : %s\n", s, s); + if( membuffer_append( buf, s, strlen( s ) ) != 0 ) { + goto error_handler; + } +Index: libupnp4-1.8.0~svn20100401-1~20100412/upnp/src/genlib/net/http/httpparser.c +=================================================================== +--- libupnp4-1.8.0~svn20100401-1~20100412.orig/upnp/src/genlib/net/http/httpparser.c 2010-04-12 22:19:56.000000000 +0100 ++++ libupnp4-1.8.0~svn20100401-1~20100412/upnp/src/genlib/net/http/httpparser.c 2010-04-12 22:19:56.000000000 +0100 +@@ -481,6 +481,7 @@ + { + http_header_t *hdr = ( http_header_t * ) msg; + ++ UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__, "Freeing http_header : %p : %s\n", hdr, hdr->name.buf ); + membuffer_destroy( &hdr->name_buf ); + membuffer_destroy( &hdr->value ); + free( hdr ); +@@ -526,6 +527,7 @@ + { + assert( msg != NULL ); + ++ UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, "httpmsg_destroy msg=%p, headers=%p\n", msg, &msg->headers ); + if( msg->initialized == 1 ) { + ListDestroy( &msg->headers, 1 ); + membuffer_destroy( &msg->msg ); +Index: libupnp4-1.8.0~svn20100401-1~20100412/threadutil/src/LinkedList.c +=================================================================== +--- libupnp4-1.8.0~svn20100401-1~20100412.orig/threadutil/src/LinkedList.c 2010-04-12 22:18:04.000000000 +0100 ++++ libupnp4-1.8.0~svn20100401-1~20100412/threadutil/src/LinkedList.c 2010-04-12 22:19:56.000000000 +0100 +@@ -49,6 +49,8 @@ + + #include + ++#include "upnpdebug.h" ++ + + static int + freeListNode( ListNode * node, +@@ -342,6 +344,7 @@ + if( list == NULL ) + return EINVAL; + ++ UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, "ListDestroy freeing list %p, freeItem=%d\n", list, freeItem ); + for( dnode = list->head.next; dnode != &list->tail; ) { + temp = dnode->next; + ListDelNode( list, dnode, freeItem ); +Index: libupnp4-1.8.0~svn20100401-1~20100412/upnp/src/gena/gena_device.c +=================================================================== +--- libupnp4-1.8.0~svn20100401-1~20100412.orig/upnp/src/gena/gena_device.c 2010-04-12 22:19:56.000000000 +0100 ++++ libupnp4-1.8.0~svn20100401-1~20100412/upnp/src/gena/gena_device.c 2010-04-12 22:19:56.000000000 +0100 +@@ -271,6 +271,8 @@ + http_parser_t response; + int return_code = -1; + ++ UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, "genaNotify enter mid_msg=%p, endmsg=%p, response=%p\n", ++ &mid_msg, &endmsg, &response ); + membuffer_init( &mid_msg ); + + // make 'end' msg (the part that won't vary with the destination) +@@ -296,6 +298,7 @@ + } + } + ++ UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, "genaNotify membuffer_destroy mid_msg=%p\n", &mid_msg ); + membuffer_destroy( &mid_msg ); + + if( return_code == UPNP_E_SUCCESS ) { +@@ -309,9 +312,11 @@ + return_code = GENA_E_NOTIFY_UNACCEPTED; + } + } ++ UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, "genaNotify httpmsg_destroy response.msg=%p\n", &response.msg ); + httpmsg_destroy( &response.msg ); + } + ++ UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, "genaNotify exit %d\n", return_code ); + return return_code; + } + --- libupnp4-1.8.0~svn20100507.orig/debian/patches/series +++ libupnp4-1.8.0~svn20100507/debian/patches/series @@ -0,0 +1,13 @@ +# libupnp-1.8.0-bsd-v4.patch +00-svn-version.patch +zz-libupnp-3-4-coexist.patch +01-debian-md5-licence.patch +05-const-tidyup.patch +07-neaten-debug.patch +09-update-doc.patch +12-debian-always-debug.patch +# 13-extra-debug.patch +14-ixml-extra-debug.patch +15-upnp-extra-debug +16-pkgconfig-link-with-pthreads.patch +0001-Security-fix-for-CERT-issue-VU-922681.patch --- libupnp4-1.8.0~svn20100507.orig/debian/patches/09-update-doc.patch +++ libupnp4-1.8.0~svn20100507/debian/patches/09-update-doc.patch @@ -0,0 +1,60 @@ +Description: Mung the upstream Doxyfile to generate meaningful documentation for Debian +Author: Nick Leverton + +Index: libupnp4-1.8.0~svn20100425/Doxyfile +=================================================================== +--- libupnp4-1.8.0~svn20100425.orig/Doxyfile 2008-06-14 23:22:58.000000000 +0100 ++++ libupnp4-1.8.0~svn20100425/Doxyfile 2010-04-25 20:27:36.000000000 +0100 +@@ -409,7 +409,7 @@ + # The QUIET tag can be used to turn on/off the messages that are generated + # by doxygen. Possible values are YES and NO. If left blank NO is used. + +-QUIET = NO ++QUIET = YES + + # The WARNINGS tag can be used to turn on/off the warning messages that are + # generated by doxygen. Possible values are YES and NO. If left blank +@@ -421,14 +421,14 @@ + # for undocumented members. If EXTRACT_ALL is set to YES then this flag will + # automatically be disabled. + +-WARN_IF_UNDOCUMENTED = YES ++WARN_IF_UNDOCUMENTED = NO + + # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for + # potential errors in the documentation, such as not documenting some + # parameters in a documented function, or documenting parameters that + # don't exist or using markup commands wrongly. + +-WARN_IF_DOC_ERROR = YES ++WARN_IF_DOC_ERROR = NO + + # This WARN_NO_PARAMDOC option can be abled to get warnings for + # functions that are documented, but have no documentation for their parameters +@@ -603,7 +603,7 @@ + # functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will + # link to the source code. Otherwise they will link to the documentstion. + +-REFERENCES_LINK_SOURCE = YES ++REFERENCES_LINK_SOURCE = NO + + # If the USE_HTAGS tag is set to YES then the references to source code + # will point to the HTML generated by the htags(1) tool instead of doxygen +@@ -761,7 +761,7 @@ + # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will + # generate Latex output. + +-GENERATE_LATEX = YES ++GENERATE_LATEX = NO + + # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. + # If a relative path is entered the value of OUTPUT_DIRECTORY will be +@@ -1029,7 +1029,7 @@ + # undefined via #undef or recursively expanded use the := operator + # instead of the = operator. + +-PREDEFINED = DEBUG UPNP_HAVE_TOOLS INCLUDE_DEVICE_APIS INCLUDE_CLIENT_APIS EXCLUDE_GENA=0 EXCLUDE_DOM=0 ++PREDEFINED = DEBUG UPNP_HAVE_TOOLS INCLUDE_DEVICE_APIS INCLUDE_CLIENT_APIS EXCLUDE_GENA=0 EXCLUDE_DOM=0 EXPORT_SPEC= + + # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then + # this tag can be used to specify a list of macro names that should be expanded. --- libupnp4-1.8.0~svn20100507.orig/debian/patches/08-threadutil-debug.patch +++ libupnp4-1.8.0~svn20100507/debian/patches/08-threadutil-debug.patch @@ -0,0 +1,28 @@ +Description: Neaten debugging for threadutils: + * Replace the single write to stderr by a call to UpnpPrintf. + This needs re-working as libthreadutil doesn't otherwise link against libupnp. +Author: Nick Leverton + +Index: libupnp4-1.8.0~svn20100425/threadutil/src/ThreadPool.c +=================================================================== +--- libupnp4-1.8.0~svn20100425.orig/threadutil/src/ThreadPool.c 2010-04-25 20:42:19.000000000 +0100 ++++ libupnp4-1.8.0~svn20100425/threadutil/src/ThreadPool.c 2010-04-25 20:42:22.000000000 +0100 +@@ -44,6 +44,8 @@ + + #include "FreeList.h" + ++#include "upnpdebug.h" /* for UpnpPrintf */ ++ + + #include + #include +@@ -853,7 +855,8 @@ + + totalJobs = tp->highJobQ.size + tp->lowJobQ.size + tp->medJobQ.size; + if (totalJobs >= tp->attr.maxJobsTotal) { +- fprintf(stderr, "total jobs = %d, too many jobs", totalJobs); ++ UpnpPrintf( UPNP_CRITICAL, TPOOL, __FILE__, __LINE__, ++ "total jobs = %d, too many jobs", totalJobs); + goto exit_function; + } + if (!jobId) { --- libupnp4-1.8.0~svn20100507.orig/debian/patches/16-pkgconfig-link-with-pthreads.patch +++ libupnp4-1.8.0~svn20100507/debian/patches/16-pkgconfig-link-with-pthreads.patch @@ -0,0 +1,20 @@ +Description: Add $PTHREAD_CFLAGS to libupnp.pc as assumed by {acx,ax}_pthread.m4 + /usr/share/doc/autoconf-archive/html/acx_pthread.html says: + "NOTE: You are assumed to not only compile your program with these flags, + but also link it with them as well. e.g. you should link with $PTHREAD_CC + $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS" +Author: Nick Leverton +Bug-Debian: http://bugs.debian.org/581608 + +Index: libupnp4-1.8.0~svn20100507/libupnp.pc.in +=================================================================== +--- libupnp4-1.8.0~svn20100507.orig/libupnp.pc.in 2010-05-14 13:18:10.000000000 +0100 ++++ libupnp4-1.8.0~svn20100507/libupnp.pc.in 2010-05-14 13:18:22.000000000 +0100 +@@ -6,6 +6,6 @@ + Name: libupnp + Description: Linux SDK for UPnP Devices + Version: @VERSION@ +-Libs: @PTHREAD_LIBS@ -L${libdir} -lupnp4 -lthreadutil4 -lixml4 ++Libs: @PTHREAD_CFLAGS@ @PTHREAD_LIBS@ -L${libdir} -lupnp4 -lthreadutil4 -lixml4 + Cflags: @PTHREAD_CFLAGS@ -I${includedir}/upnp +