Hello,

On Tue, Dec 12, 2017 at 10:06:44PM +0100, Sebastian Ramacher wrote:
> Source: gmediaserver
> Version: 0.13.0-8
> Severity: important
> Tags: sid buster
> 
> gmediaserver FTBFS against upnp 1.8 (available in experimental):
> | gcc -DHAVE_CONFIG_H -I. -I. -I..  -I../lib -I../lib   -Wall 
> -I/usr/include/uuid -pthread -I/usr/include/upnp -I/usr/include/taglib -g -O2 
> -c upnp.c
> | upnp.c:210:36: warning: 'struct Upnp_Subscription_Request' declared inside 
> parameter list will not be visible outside of this definition or declaration
> |  handle_subscription_request(struct Upnp_Subscription_Request *request)
> |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~
> | upnp.c: In function 'handle_subscription_request':
> | upnp.c:218:57: error: dereferencing pointer to incomplete type 'struct 
> Upnp_Subscription_Request'
> |      say(3, _("Event device UDN: %s\n"), quotearg(request->UDN));
> |                                                          ^~
> | upnp.c: At top level:
> | upnp.c:261:31: warning: 'struct Upnp_State_Var_Request' declared inside 
> parameter list will not be visible outside of this definition or declaration
> |  handle_get_var_request(struct Upnp_State_Var_Request *request)
> |                                ^~~~~~~~~~~~~~~~~~~~~~
> | upnp.c: In function 'handle_get_var_request':
> | upnp.c:269:52: error: dereferencing pointer to incomplete type 'struct 
> Upnp_State_Var_Request'
> |      error = getnameinfo((struct sockaddr *)&request->CtrlPtIPAddr, 
> sizeof(request->CtrlPtIPAddr),
> |                                                     ^~
> | upnp.c: In function 'handle_action_request':
> | upnp.c:317:52: error: dereferencing pointer to incomplete type 'struct 
> Upnp_Action_Request'
> |      error = getnameinfo((struct sockaddr *)&request->CtrlPtIPAddr, 
> sizeof(request->CtrlPtIPAddr),
> |                                                     ^~
> | upnp.c: In function 'device_callback_event_handler':
> | upnp.c:369:37: warning: passing argument 1 of 'handle_subscription_request' 
> from incompatible pointer type [-Wincompatible-pointer-types]
> |          handle_subscription_request((struct Upnp_Subscription_Request *) 
> event);
> |                                      ^
> | upnp.c:210:1: note: expected 'struct Upnp_Subscription_Request *' but 
> argument is of type 'struct Upnp_Subscription_Request *'
> |  handle_subscription_request(struct Upnp_Subscription_Request *request)
> |  ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> | upnp.c:372:32: warning: passing argument 1 of 'handle_get_var_request' from 
> incompatible pointer type [-Wincompatible-pointer-types]
> |          handle_get_var_request((struct Upnp_State_Var_Request *) event);
> |                                 ^
> | upnp.c:261:1: note: expected 'struct Upnp_State_Var_Request *' but argument 
> is of type 'struct Upnp_State_Var_Request *'
> |  handle_get_var_request(struct Upnp_State_Var_Request *request)
> |  ^~~~~~~~~~~~~~~~~~~~~~
> | upnp.c: In function 'init_upnp':
> | upnp.c:521:11: warning: implicit declaration of function 
> 'UpnpSetVirtualDirCallbacks'; did you mean 'UpnpAddVirtualDir'? 
> [-Wimplicit-function-declaration]
> |      res = UpnpSetVirtualDirCallbacks(&virtual_dir_callbacks);
> |            ^~~~~~~~~~~~~~~~~~~~~~~~~~
> |            UpnpAddVirtualDir
> | upnp.c:524:11: error: too few arguments to function 'UpnpAddVirtualDir'
> |      res = UpnpAddVirtualDir("/files");
> |            ^~~~~~~~~~~~~~~~~
> | In file included from upnp.c:23:0:
> | /usr/include/upnp/upnp.h:2741:17: note: declared here
> |  EXPORT_SPEC int UpnpAddVirtualDir(
> |                  ^~~~~~~~~~~~~~~~~
> | upnp.c:527:11: error: too few arguments to function 'UpnpAddVirtualDir'
> |      res = UpnpAddVirtualDir("/upnp");
> |            ^~~~~~~~~~~~~~~~~
> | In file included from upnp.c:23:0:
> | /usr/include/upnp/upnp.h:2741:17: note: declared here
> |  EXPORT_SPEC int UpnpAddVirtualDir(
> |                  ^~~~~~~~~~~~~~~~~
> | upnp.c:544:44: warning: passing argument 5 of 'UpnpRegisterRootDevice2' 
> from incompatible pointer type [-Wincompatible-pointer-types]
> |                strlen(mediaserver_desc), 1, device_callback_event_handler, 
> NULL, &device);
> |                                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> | In file included from upnp.c:23:0:
> | /usr/include/upnp/upnp.h:800:17: note: expected 'Upnp_FunPtr {aka int 
> (*)(enum Upnp_EventType_e,  const void *, void *)}' but argument is of type 
> 'int (*)(Upnp_EventType,  void *, void *) {aka int (*)(enum Upnp_EventType_e, 
>  void *, void *)}'
> |  EXPORT_SPEC int UpnpRegisterRootDevice2(
> |                  ^~~~~~~~~~~~~~~~~~~~~~~
> | Makefile:598: recipe for target 'upnp.o' failed

I looked into patching gmediaserver for building with libupnp-1.8, but
it's not trivial. The code modifies data that is owned by libupnp, for
example see
https://sources.debian.org/src/gmediaserver/0.13.0-8/src/upnp.c/#L330.
With libupnp-1.8 the program only gets a const pointer to these
structures and so the way requests are handled need to be changed.

Given that gmediaserver was orphaned (#878730), didn't see an upload in
the last 6 years and the last upstream release is from 2007 and the last
upstream commit from 2009, I suggest to remove gmediaserver from Debian.

Best regards
Uwe

Attachment: signature.asc
Description: PGP signature

Reply via email to