Hello community, here is the log from the commit of package pulseaudio.3083 for openSUSE:13.1:Update checked in at 2014-10-24 08:41:51 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:13.1:Update/pulseaudio.3083 (Old) and /work/SRC/openSUSE:13.1:Update/.pulseaudio.3083.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pulseaudio.3083" Changes: -------- New Changes file: --- /dev/null 2014-09-26 12:09:11.568032006 +0200 +++ /work/SRC/openSUSE:13.1:Update/.pulseaudio.3083.new/pulseaudio.changes 2014-10-24 08:41:53.000000000 +0200 @@ -0,0 +1,1009 @@ +------------------------------------------------------------------- +Sat Oct 11 19:06:47 UTC 2014 - stefan.bru...@rwth-aachen.de + +- Add pulseaudio_core_Fix_resource_leak_in_core-util.patch + +------------------------------------------------------------------- +Fri Jul 18 20:12:13 UTC 2014 - sree...@suse.com + +- Add pulseaudio-bnc881524-rtp.patch. CVE-2014-3970 + Denial of service in module-rtp-recv + +------------------------------------------------------------------- +Mon Nov 25 11:20:40 CET 2013 - ti...@suse.de + +- pulseaudio-introspect-Fix-ABI-break.patch: + Fix the incompatible size of pa_card_profile_info that leads to + a crash of pavucontrol (bnc#851872) + +------------------------------------------------------------------- +Fri Oct 18 17:49:24 UTC 2013 - dims...@opensuse.org + +- Update to git master (PA 5.0) (4.0-270-g9490a): + + alsa: fix crash when loading bare alsa sink (bnc#846532). + + sndfile-util: fir format for 24bit depth wav files. + + bluetooth: track discovery modules by index. + + build system fixes. + +------------------------------------------------------------------- +Sat Oct 5 23:37:59 UTC 2013 - dims...@opensuse.org + +- Update to git mastere (PA 5.0 on the way) (265-g35fe): + + The more extensive bluez5 branch was merged + + PA allows to build bluez4 and bluez5 modules in parallel. + Note: this does not mean that bluez4 and bluez5 can co-exist, + only that PA can decide at runtime which bluez-daemon is + available. +- Pass --disable-bluez4 to configure: we know that we run bluez5. + +------------------------------------------------------------------- +Wed Sep 25 17:48:30 UTC 2013 - dims...@opensuse.org + +- bnc#840845: Update to git master (PA 5.0 on the way) (6f94c). + + Various code cleanups for inclusion of bluez5 stack. +- No longer pass --enable-bluez5 --disable-bluez4 to configure: + master only speaks bluez5. + +------------------------------------------------------------------- +Wed Sep 11 10:34:33 CEST 2013 - mhruse...@suse.cz + +- support for system wide mode (separate subpackage with service) + +------------------------------------------------------------------- +Sat Sep 7 11:30:40 UTC 2013 - dims...@opensuse.org + +- Update to git snapshot (rev: gbf9b3)/ bluez5 branch. + Note: this is not HEAD of the bluez5 branch, as in local tests, + this did fail to load the bluetooth modules. + +------------------------------------------------------------------- +Wed Aug 21 09:38:49 UTC 2013 - dims...@opensuse.org + +- Fix fdupes call on doxygen/html: use hardlinks instead of + softlinks (bnc#835683). + +------------------------------------------------------------------- +Mon Jun 24 15:10:41 UTC 2013 - ohole...@suse.com + +- add SUSEfirewall service definition (bnc#607614) + +------------------------------------------------------------------- +Thu Jun 13 13:45:08 UTC 2013 - ohole...@suse.com + +- require the same liborc version which was used to build against + +------------------------------------------------------------------- +Mon Jun 3 20:55:20 UTC 2013 - ohole...@suse.com + +- update to pulseaudio 4.0 +* Better handling of low latency requests +* Optimisations while mixing (generic, ARM NEON) +* Default resampler is now speex-float-1 (lower CPU usage) +* Major Bluetooth refactoring for better reliability and easier +maintenance +* Fixes for graceful hand-off to/from JACK +* New module to apply ducking based on stream roles +* Echo canceller infrastructure fixes +* Bash and zsh completion for command line tools +* Solaris and OS X fixes +* Lots of other enhancements, bug fixes, and documenation and i18n +updates- + +------------------------------------------------------------------- +Thu Apr 25 14:52:14 UTC 2013 - dmuel...@suse.com + +- explicitely disable building NEON for armv5/6 + +------------------------------------------------------------------- +Fri Mar 8 10:17:34 CET 2013 - ti...@suse.de + +- Fix a bug setting speaker volume to zero wrongly (bnc#805865) + +------------------------------------------------------------------- +Tue Mar 5 06:03:19 UTC 2013 - crrodrig...@opensuse.org + +- remove fno-strict-aliasing from CFLAGS +- do not export SUSE_ASNEEDED=0, problem already fixed. + +------------------------------------------------------------------- +Sun Jan 20 17:55:54 UTC 2013 - ohole...@suse.com + +- bluetooth module now requires Bluez > 4.99 + +------------------------------------------------------------------- +Mon Dec 31 18:09:24 UTC 2012 - crrodrig...@opensuse.org + +- Update to pulseaudio 3.0 +* ALSA Use Case Manager (UCM) support +* Runtime editable LADSPA filter parameters +* Out-of-the-box support for Bluetooth sources +* Configurable device latency offset +* Various ALSA changes +* Lots of infrastructure improvements + +------------------------------------------------------------------- +Tue Nov 27 15:23:42 CET 2012 - ti...@suse.de + +- Add the audio setup for qemu/kvm to setup-pulseaudio script + (bnc#737070) + +------------------------------------------------------------------- +Sat Nov 17 02:01:24 UTC 2012 - crrodrig...@opensuse.org + +- disable all HAL compat/support since it is long gone. + +------------------------------------------------------------------- +Thu Nov 15 13:23:47 UTC 2012 - tittiatc...@gmail.com + +- Enable systemd integration (following the distribution): + + Add systemd-devel BuildRequires. + + Pass --enable-systemd to configure. + +------------------------------------------------------------------- +Sun Nov 4 00:58:52 UTC 2012 - crrodrig...@opensuse.org + +- Place udev rules in the proper place + +------------------------------------------------------------------- +Tue Oct 16 12:12:54 UTC 2012 - co...@suse.com + +- buildrequire systemd through pkgconfig provides to remove cycle + +------------------------------------------------------------------- +Thu Sep 6 14:08:55 CEST 2012 - ti...@suse.de + +- Fix the broken setup by setup-pulseaudio when alsa-plugins-pulse + doesn't exist (bnc#779039) + +------------------------------------------------------------------- +Sat Jul 21 13:58:43 UTC 2012 - zai...@opensuse.org + +- Update to version 2.1: + + Actually build libwebrtc-util. + + Various bugfixes. + +------------------------------------------------------------------- +Mon Jun 18 15:50:43 CEST 2012 - ti...@suse.de + +- Add kmix setup to setup-pulseaudio script + +------------------------------------------------------------------- +Wed Jun 6 14:16:34 CEST 2012 - ti...@suse.de + +- Add the proper exit codes to setup-pulseaudio script + (for avoiding the errors during installation, too) + +------------------------------------------------------------------- +Mon Jun 4 08:37:07 UTC 2012 - idon...@suse.com + +- Remove rpmlintrc, we can't use setBadness for Factory + +------------------------------------------------------------------- +Wed May 30 09:49:36 CEST 2012 - ti...@suse.de + +- Kill leftover PA processes when disabled via setup-pulseaudio +- Set up gstreamer audiosink/src in setup-pulseaudio script, too + +------------------------------------------------------------------- +Tue May 29 13:01:46 CEST 2012 - ti...@suse.de + +- Add the setup for SoX to setup-pulseaudio script + +------------------------------------------------------------------- +Sat May 19 20:45:28 UTC 2012 - pascal.ble...@opensuse.org + +- update to 2.0: + + Alternate sample rates. + + Jack detection. ++++ 812 more lines (skipped) ++++ between /dev/null ++++ and /work/SRC/openSUSE:13.1:Update/.pulseaudio.3083.new/pulseaudio.changes New: ---- baselibs.conf default.pa-for-gdm disabled-start.diff pulseaudio-4.0-270-g9490a.tar.xz pulseaudio-bnc881524-rtp.patch pulseaudio-introspect-Fix-ABI-break.patch pulseaudio-server.fw pulseaudio-wrong-memset.patch pulseaudio.changes pulseaudio.service pulseaudio.spec pulseaudio_core_Fix_resource_leak_in_core-util.patch setup-pulseaudio suppress-socket-error-msg.diff sysconfig.sound-pulseaudio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ pulseaudio.spec ++++++ ++++ 622 lines (skipped) ++++++ baselibs.conf ++++++ libpulse0 obsoletes "pulseaudio-libs-<targettype> <= <version>" provides "pulseaudio-libs-<targettype> = <version>" libpulse-mainloop-glib0 ++++++ default.pa-for-gdm ++++++ load-module module-device-restore load-module module-card-restore load-module module-udev-detect load-module module-native-protocol-unix load-module module-default-device-restore load-module module-rescue-streams load-module module-always-sink load-module module-intended-roles load-module module-suspend-on-idle load-module module-console-kit load-module module-position-event-sounds ++++++ disabled-start.diff ++++++ Index: src/daemon/start-pulseaudio-x11.in =================================================================== --- src/daemon/start-pulseaudio-x11.in.orig +++ src/daemon/start-pulseaudio-x11.in @@ -19,6 +19,12 @@ set -e +. /etc/sysconfig/sound + +if [ x"$PULSEAUDIO_ENABLE" = x"no" ] || [ x"$PULSEAUDIO_SYSTEM" = x"yes" ] ; then + exit 1 +fi + @PA_BINARY@ --start "$@" if [ x"$DISPLAY" != x ] ; then Index: src/daemon/start-pulseaudio-kde.in =================================================================== --- src/daemon/start-pulseaudio-kde.in.orig +++ src/daemon/start-pulseaudio-kde.in @@ -19,6 +19,12 @@ set -e +. /etc/sysconfig/sound + +if [ x"$PULSEAUDIO_ENABLE" = x"no" ] || [ x"$PULSEAUDIO_SYSTEM" = x"yes" ]; then + exit 1 +fi + [ -z "$PULSE_SERVER" ] @PA_BINARY@ --start "$@" ++++++ pulseaudio-bnc881524-rtp.patch ++++++ commit 26b9d22dd24c17eb118d0205bf7b02b75d435e3c Author: Alexander E. Patrakov <patra...@gmail.com> Date: Thu Jun 5 22:29:25 2014 +0600 rtp-recv: fix crash on empty UDP packets (CVE-2014-3970) On FIONREAD returning 0 bytes, we cannot return success, as the caller (rtpoll_work_cb in module-rtp-recv.c) would then try to pa_memblock_unref(chunk.memblock) and, because memblock is NULL, trigger an assertion. Also we have to read out the possible empty packet from the socket, so that the kernel doesn't tell us again and again about it. Signed-off-by: Alexander E. Patrakov <patra...@gmail.com> diff --git a/src/modules/rtp/rtp.c b/src/modules/rtp/rtp.c index 570737e..7b75e0e 100644 --- a/src/modules/rtp/rtp.c +++ b/src/modules/rtp/rtp.c @@ -182,8 +182,29 @@ int pa_rtp_recv(pa_rtp_context *c, pa_memchunk *chunk, pa_mempool *pool, struct goto fail; } - if (size <= 0) - return 0; + if (size <= 0) { + /* size can be 0 due to any of the following reasons: + * + * 1. Somebody sent us a perfectly valid zero-length UDP packet. + * 2. Somebody sent us a UDP packet with a bad CRC. + * + * It is unknown whether size can actually be less than zero. + * + * In the first case, the packet has to be read out, otherwise the + * kernel will tell us again and again about it, thus preventing + * reception of any further packets. So let's just read it out + * now and discard it later, when comparing the number of bytes + * received (0) with the number of bytes wanted (1, see below). + * + * In the second case, recvmsg() will fail, thus allowing us to + * return the error. + * + * Just to avoid passing zero-sized memchunks and NULL pointers to + * recvmsg(), let's force allocation of at least one byte by setting + * size to 1. + */ + size = 1; + } if (c->memchunk.length < (unsigned) size) { size_t l; ++++++ pulseaudio-introspect-Fix-ABI-break.patch ++++++ >From 85e7fbc196f4424f68e530c2e3a01d9b941f293e Mon Sep 17 00:00:00 2001 From: Luiz Augusto von Dentz <luiz.von.de...@intel.com> Date: Mon, 04 Nov 2013 17:41:22 +0000 Subject: introspect: Fix ABI break introduced by b98a2e1 The size of pa_card_profile_info cannot change even if it just a field appended to end because each entry is appended to a contiguous memory and accessed by offset this may lead clients to access invalid data. To fix a new struct called pa_card_profile_info2 is introduced and shall be used for now on while pa_card_profile_info shall be considered deprecated but it is still mantained for backward compatibility. A new field called profiles2 is introduced to pa_card_info, this new field is an array of pointers to pa_card_profile_info2 so it should be possible to append new fields to the end of the pa_card_profile_info2 without breaking binary compatibility as the entries are not accessed by offset. --- diff --git a/src/pulse/introspect.c b/src/pulse/introspect.c index 45e0115..2d54fdb 100644 --- a/src/pulse/introspect.c +++ b/src/pulse/introspect.c @@ -769,6 +769,15 @@ static void card_info_free(pa_card_info* i) { pa_xfree(i->profiles); + if (i->n_profiles) { + uint32_t j; + + for (j = 0; j < i->n_profiles; j++) + pa_xfree(i->profiles2[j]); + + pa_xfree(i->profiles2); + } + if (i->ports) { uint32_t j; @@ -776,6 +785,8 @@ static void card_info_free(pa_card_info* i) { if (i->ports[j]) { if (i->ports[j]->profiles) pa_xfree(i->ports[j]->profiles); + if (i->ports[j]->profiles2) + pa_xfree(i->ports[j]->profiles2); if (i->ports[j]->proplist) pa_proplist_free(i->ports[j]->proplist); } @@ -829,6 +840,7 @@ static int fill_card_port_info(pa_context *context, pa_tagstruct* t, pa_card_inf if (port->n_profiles > 0) { port->profiles = pa_xnew0(pa_card_profile_info*, i->n_profiles+1); + port->profiles2 = pa_xnew0(pa_card_profile_info2*, i->n_profiles+1); for (k = 0; k < port->n_profiles; k++) { const char* profilename; @@ -839,6 +851,7 @@ static int fill_card_port_info(pa_context *context, pa_tagstruct* t, pa_card_inf for (l = 0; l < i->n_profiles; l++) { if (pa_streq(i->profiles[l].name, profilename)) { port->profiles[k] = &i->profiles[l]; + port->profiles2[k] = i->profiles2[l]; break; } } @@ -857,6 +870,41 @@ static int fill_card_port_info(pa_context *context, pa_tagstruct* t, pa_card_inf return 0; } +static int fill_card_profile_info(pa_context *context, pa_tagstruct* t, pa_card_info* i) { + uint32_t j; + + i->profiles = pa_xnew0(pa_card_profile_info, i->n_profiles+1); + i->profiles2 = pa_xnew0(pa_card_profile_info2*, i->n_profiles+1); + + for (j = 0; j < i->n_profiles; j++) { + if (pa_tagstruct_gets(t, &i->profiles[j].name) < 0 || + pa_tagstruct_gets(t, &i->profiles[j].description) < 0 || + pa_tagstruct_getu32(t, &i->profiles[j].n_sinks) < 0 || + pa_tagstruct_getu32(t, &i->profiles[j].n_sources) < 0 || + pa_tagstruct_getu32(t, &i->profiles[j].priority) < 0) + return -PA_ERR_PROTOCOL; + + i->profiles2[j] = pa_xnew0(pa_card_profile_info2, 1); + i->profiles2[j]->name = i->profiles[j].name; + i->profiles2[j]->description = i->profiles[j].description; + i->profiles2[j]->n_sinks = i->profiles[j].n_sinks; + i->profiles2[j]->n_sources = i->profiles[j].n_sources; + i->profiles2[j]->priority = i->profiles[j].priority; + i->profiles2[j]->available = 1; + + if (context->version >= 29) { + uint32_t av; + + if (pa_tagstruct_getu32(t, &av) < 0) + return -PA_ERR_PROTOCOL; + + i->profiles2[j]->available = av; + } + } + + return 0; +} + static void context_get_card_info_callback(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata) { pa_operation *o = userdata; int eol = 1; @@ -890,29 +938,8 @@ static void context_get_card_info_callback(pa_pdispatch *pd, uint32_t command, u goto fail; if (i.n_profiles > 0) { - i.profiles = pa_xnew0(pa_card_profile_info, i.n_profiles+1); - - for (j = 0; j < i.n_profiles; j++) { - - if (pa_tagstruct_gets(t, &i.profiles[j].name) < 0 || - pa_tagstruct_gets(t, &i.profiles[j].description) < 0 || - pa_tagstruct_getu32(t, &i.profiles[j].n_sinks) < 0 || - pa_tagstruct_getu32(t, &i.profiles[j].n_sources) < 0 || - pa_tagstruct_getu32(t, &i.profiles[j].priority) < 0) - goto fail; - - i.profiles[j].available = 1; - if (o->context->version >= 29) { - uint32_t av; - if (pa_tagstruct_getu32(t, &av) < 0) - goto fail; - i.profiles[j].available = av; - } - } - - /* Terminate with an extra NULL entry, just to make sure */ - i.profiles[j].name = NULL; - i.profiles[j].description = NULL; + if (fill_card_profile_info(o->context, t, &i) < 0) + goto fail; } i.proplist = pa_proplist_new(); @@ -929,6 +956,7 @@ static void context_get_card_info_callback(pa_pdispatch *pd, uint32_t command, u for (j = 0; j < i.n_profiles; j++) if (pa_streq(i.profiles[j].name, ap)) { i.active_profile = &i.profiles[j]; + i.active_profile2 = i.profiles2[j]; break; } } diff --git a/src/pulse/introspect.h b/src/pulse/introspect.h index f199a18..023b418 100644 --- a/src/pulse/introspect.h +++ b/src/pulse/introspect.h @@ -443,22 +443,31 @@ pa_operation* pa_context_kill_client(pa_context *c, uint32_t idx, pa_context_suc /** @{ \name Cards */ -/** Stores information about a specific profile of a card. Please - * note that this structure can be extended as part of evolutionary - * API updates at any time in any new release. \since 0.9.15 */ +/** \deprecated Superseded by pa_card_profile_info2 \since 0.9.15 */ typedef struct pa_card_profile_info { const char *name; /**< Name of this profile */ const char *description; /**< Description of this profile */ uint32_t n_sinks; /**< Number of sinks this profile would create */ uint32_t n_sources; /**< Number of sources this profile would create */ uint32_t priority; /**< The higher this value is, the more useful this profile is as a default. */ +} pa_card_profile_info; + +/** Stores information about a specific profile of a card. Please + * note that this structure can be extended as part of evolutionary + * API updates at any time in any new release. \since 5.0 */ +typedef struct pa_card_profile_info2 { + const char *name; /**< Name of this profile */ + const char *description; /**< Description of this profile */ + uint32_t n_sinks; /**< Number of sinks this profile would create */ + uint32_t n_sources; /**< Number of sources this profile would create */ + uint32_t priority; /**< The higher this value is, the more useful this profile is as a default. */ int available; /**< Is this profile available? If this is zero, meaning "unavailable", * then it makes no sense to try to activate this profile. If this is * non-zero, it's still not a guarantee that activating the profile will * result in anything useful, it just means that the server isn't aware of * any reason why the profile would definitely be useless. \since 5.0 */ -} pa_card_profile_info; +} pa_card_profile_info2; /** Stores information about a specific port of a card. Please * note that this structure can be extended as part of evolutionary @@ -470,9 +479,10 @@ typedef struct pa_card_port_info { int available; /**< A #pa_port_available enum, indicating availability status of this port. */ int direction; /**< A #pa_direction enum, indicating the direction of this port. */ uint32_t n_profiles; /**< Number of entries in profile array */ - pa_card_profile_info** profiles; /**< Array of pointers to available profiles, or NULL. Array is terminated by an entry set to NULL. */ + pa_card_profile_info** profiles; /**< \deprecated Superseded by profiles2 */ pa_proplist *proplist; /**< Property list */ int64_t latency_offset; /**< Latency offset of the port that gets added to the sink/source latency when the port is active. \since 3.0 */ + pa_card_profile_info2** profiles2; /**< Array of pointers to available profiles, or NULL. Array is terminated by an entry set to NULL. */ } pa_card_port_info; /** Stores information about cards. Please note that this structure @@ -484,11 +494,13 @@ typedef struct pa_card_info { uint32_t owner_module; /**< Index of the owning module, or PA_INVALID_INDEX. */ const char *driver; /**< Driver name */ uint32_t n_profiles; /**< Number of entries in profile array */ - pa_card_profile_info* profiles; /**< Array of available profile, or NULL. Array is terminated by an entry with name set to NULL. Number of entries is stored in n_profiles. */ - pa_card_profile_info* active_profile; /**< Pointer to active profile in the array, or NULL. */ + pa_card_profile_info* profiles; /**< \deprecated Superseded by profiles2 */ + pa_card_profile_info* active_profile; /**< \deprecated Superseded by active_profile2 */ pa_proplist *proplist; /**< Property list */ uint32_t n_ports; /**< Number of entries in port array */ pa_card_port_info **ports; /**< Array of pointers to ports, or NULL. Array is terminated by an entry set to NULL. */ + pa_card_profile_info2** profiles2; /**< Array of pointers to available profiles, or NULL. Array is terminated by an entry set to NULL. */ + pa_card_profile_info2* active_profile2; /**< Pointer to active profile in the array, or NULL. */ } pa_card_info; /** Callback prototype for pa_context_get_card_info_...() \since 0.9.15 */ diff --git a/src/utils/pactl.c b/src/utils/pactl.c index df47caa..40e6689 100644 --- a/src/utils/pactl.c +++ b/src/utils/pactl.c @@ -570,13 +570,13 @@ static void get_card_info_callback(pa_context *c, const pa_card_info *i, int is_ pa_xfree(pl); - if (i->profiles) { - pa_card_profile_info *p; + if (i->n_profiles > 0) { + pa_card_profile_info2 **p; printf(_("\tProfiles:\n")); - for (p = i->profiles; p->name; p++) - printf("\t\t%s: %s (sinks: %u, sources: %u, priority: %u, available: %s)\n", p->name, - p->description, p->n_sinks, p->n_sources, p->priority, pa_yes_no(p->available)); + for (p = i->profiles2; *p; p++) + printf("\t\t%s: %s (sinks: %u, sources: %u, priority: %u, available: %s)\n", (*p)->name, + (*p)->description, (*p)->n_sinks, (*p)->n_sources, (*p)->priority, pa_yes_no((*p)->available)); } if (i->active_profile) -- cgit v0.9.0.2-2-gbebe ++++++ pulseaudio-server.fw ++++++ ## Name: PulseAudio server (TCP) ## Description: Ports for PulseAudio network access (for module-native-protocol-tcp) TCP="4713" ++++++ pulseaudio-wrong-memset.patch ++++++ --- src/modules/echo-cancel/adrian-aec.c.orig 2012-05-20 09:24:20.836607707 +0200 +++ src/modules/echo-cancel/adrian-aec.c 2012-05-20 09:26:07.641603903 +0200 @@ -167,7 +167,7 @@ } else if (1 == a->hangover) { --(a->hangover); // My Leaky NLMS is to erase vector w when hangover expires - memset(a->w_arr, 0, sizeof(a->w_arr)); + memset(a->w_arr, 0, sizeof(REAL)); } } } ++++++ pulseaudio.service ++++++ [Unit] Description=System wide PulseAudio instance After=syslog.target network.target alsasound.service [Service] Type=simple Restart=always ExecStart=/usr/bin/pulseaudio --system --log-target=syslog [Install] WantedBy=multi-user.target ++++++ pulseaudio_core_Fix_resource_leak_in_core-util.patch ++++++ >From ff9e9e05df686f14f77c99fd1ed5f523b73bccb6 Mon Sep 17 00:00:00 2001 From: Peter Meerwald <p.meerw...@bct-electronic.com> Date: Mon, 16 Dec 2013 16:35:50 +0100 Subject: core: Fix resource leak in core-util https://scan7.coverity.com:8443/reports.htm#v10205/p10016/fileInstanceId=8477&defectInstanceId=3693&mergedDefectId=591269 Signed-off-by: Peter Meerwald <pme...@pmeerw.net> diff --git a/src/pulsecore/core-util.c b/src/pulsecore/core-util.c index 2efa280..0d9e354 100644 --- a/src/pulsecore/core-util.c +++ b/src/pulsecore/core-util.c @@ -326,16 +326,20 @@ again: goto fail; } - if (!update_perms) + if (!update_perms) { + pa_assert_se(pa_close(fd) >= 0); return 0; + } #ifdef HAVE_FCHOWN if (uid == (uid_t) -1) uid = getuid(); if (gid == (gid_t) -1) gid = getgid(); - if (fchown(fd, uid, gid) < 0) + if (fchown(fd, uid, gid) < 0) { + pa_assert_se(pa_close(fd) >= 0); goto fail; + } #endif #ifdef HAVE_FCHMOD -- cgit v0.10.2 ++++++ setup-pulseaudio ++++++ #!/bin/sh LIST_OF_OSS_APPS="aumix sox" show_help() { echo "setup-pulseaudio [ --enable | --disable | --auto | --status ]" echo "" echo "Modifies configuration files of some applications for PulseAudio" echo " --enable Enables PulseAudio" echo " --disable Disables PulseAudio" echo " --auto Automatically enables/disables PulseAudio based on configuration" echo " --status Shows activation state (disabled or enabled) for PulseAudio" echo "" echo "You need to be root for this command to succeed" echo "You may need to re-login for changes to take effect" exit 1 } check_root() { id=`id -u` if [ "x$id" = "x0" ]; then true else echo "You need to be root in order to enable/disable pulseaudio" false fi } PROFNAME=/etc/profile.d/pulseaudio.sh CPROFNAME=/etc/profile.d/pulseaudio.csh MPLAYER_CONF=/etc/mplayer/mplayer.conf set_variable () { if test -f $PROFNAME && grep -q "export $1"= $PROFNAME; then sed -i -e "s|export $1=.*|export $1=$2|g" $PROFNAME else echo "export $1=$2" >> $PROFNAME fi if test -f $CPROFNAME && grep -q "setenv $1 " $CPROFNAME; then sed -i -e "s|setenv $1 .*|setenv $1 $2|g" $CPROFNAME else echo "setenv $1 $2" >> $CPROFNAME fi } delete_variable () { if test -f $PROFNAME && grep -q "export $1"= $PROFNAME; then sed -i -e "/export $1=.*/d" $PROFNAME fi if test -f $CPROFNAME && grep -q "setenv $1 " $CPROFNAME; then sed -i -e "/setenv $1 .*/d" $CPROFNAME fi } setup_gconf_vendor() { if [ -x /usr/bin/gconftool-2 ]; then /usr/bin/gconftool-2 --direct --config-source \ xml:readwrite:/etc/gconf/gconf.xml.vendor \ "$@" fi } enable_phonon() { echo "Enabling PulseAudio for Phonon..." delete_variable PHONON_PULSEAUDIO_DISABLE } enable_kmix() { echo "Enabling PulseAudio for Kmix..." delete_variable KMIX_PULSEAUDIO_DISABLE } enable_alsa() { echo "Enabling PulseAudio for ALSA..." if [ -f /etc/alsa-pulse.conf ]; then set_variable ALSA_CONFIG_PATH /etc/alsa-pulse.conf else echo "Missing /etc/alsa-pluse.conf; please install alsa-plugins-pulse package" fi } enable_libao() { echo "Enabling PulseAudio for libao..." if test -f /etc/libao.conf; then if grep -q "default_driver=pulse" /etc/libao.conf; then echo "Default driver is pulse already in /etc/libao.conf" else echo "default_driver=pulse" >> /etc/libao.conf fi else echo "default_driver=pulse" >> /etc/libao.conf fi } enable_mplayer() { echo "Enabling PulseAudio for mplayer..." if test -f $MPLAYER_CONF; then if grep -q '^ao *= *pulse' $MPLAYER_CONF; then : elif grep -q '^ao *=' $MPLAYER_CONF; then sed -i -e 's/^ao *= *\(.*\)$/ao=pulse,\1/g' $MPLAYER_CONF else echo "ao=pulse" >> $MPLAYER_CONF fi fi # FIXME: mplayerplug-in uses $HOME/.mplayer/mplayerplug-in.conf } enable_speechd() { echo "Enabling PulseAudio for speech dispatcher..." if test -f /etc/speech-dispatcher/speechd.conf; then if grep -q 'AudioOutputMethod' /etc/speech-dispatcher/speechd.conf; then sed -i -e "s|^.*AudioOutputMethod .*|AudioOutputMethod \"pulse\"|g" /etc/speech-dispatcher/speechd.conf else echo "AudioOutputMethod \"pulse\"" >> /etc/speech-dispatcher/speechd.conf fi fi } enable_openal() { # nothing to do here. openal-soft is patched to prefer pulse but # it won't autostart the daemon. return 0 } enable_oss() { echo "Enabling PulseAudio for OSS..." for app in $LIST_OF_OSS_APPS; do if grep -q "alias $app='padsp $app'" $PROFNAME; then echo "Application $app already setup for PulseAudio" else echo "alias $app='padsp $app'" >> $PROFNAME fi done } enable_sdl() { echo "Enabling PulseAudio for SDL..." # For SDL, we just add an environment variable, so that apps use the PA audio driver set_variable SDL_AUDIODRIVER pulse } enable_timidity() { echo "Enabling PulseAudio for Timidity..." # Use esound output for timidity if grep -q "alias timidity='timidity -Oe'" $PROFNAME; then echo "Timidity already setup for using PulseAudio" else echo "alias timidity='timidity -Oe'" >> $PROFNAME fi } enable_xine() { #echo "Enabling PulseAudio for Xine..." # FIXME: xine uses $HOME/.xine/config return 0 } enable_festival() { test -f /etc/festival.scm || return 0 echo "Enabling PulseAudio for Festival..." cat << EOF >> /etc/festival.scm ;;;; Use pulseaudio to output sound (Parameter.set 'Audio_Command "paplay -n festival \$FILE") (Parameter.set 'Audio_Method 'Audio_Command) (Parameter.set 'Audio_Required_Format 'snd) EOF } enable_sox() { echo "Enabling PulseAudio for SoX..." set_variable AUDIODRIVER pulseaudio } enable_gstreamer() { # set autoaudiosink/src, which should pick up PA echo "Setting auto sink/src for gstreamer" setup_gconf_vendor -s -t str \ /system/gstreamer/0.10/default/audiosink autoaudiosink setup_gconf_vendor -s -t str \ /system/gstreamer/0.10/default/musicaudiosink autoaudiosink setup_gconf_vendor -s -t str \ /system/gstreamer/0.10/default/chataudiosink autoaudiosink setup_gconf_vendor -s -t str \ /system/gstreamer/0.10/default/audiosrc autoaudiosrc } enable_qemu () { echo "Enabling PulseAudio for QEMU/KVM" set_variable QEMU_AUDIO_DRV pa } enable_autospawn() { echo "Enabling PulseAudio autospawn..." if grep -q ^autospawn /etc/pulse/client.conf; then sed -i -e "s|^autospawn.*|autospawn = yes|g" /etc/pulse/client.conf else echo "autospawn = yes" >> /etc/pulse/client.conf fi } disable_alsa() { echo "Disabling PulseAudio for ALSA..." delete_variable ALSA_CONFIG_PATH } disable_phonon() { echo "Disabling PulseAudio for Phonon..." set_variable PHONON_PULSEAUDIO_DISABLE 1 } disable_kmix() { echo "Disabling PulseAudio for Kmix..." set_variable KMIX_PULSEAUDIO_DISABLE 1 } disable_libao() { if test -f /etc/libao.conf; then echo "Disabling PulseAudio for libao..." sed -i -e "/default_driver=pulse/d" /etc/libao.conf fi } disable_mplayer() { if test -f $MPLAYER_CONF; then echo "Disabling PulseAudio for mplayer..." sed -i -e 's/^ao *= *pulse,*/ao=/g' \ -e 's/^ao *= *$/ao=alsa/g' $MPLAYER_CONF fi } disable_speechd() { echo "Disabling PulseAudio for speech dispatcher..." if test -f /etc/speech-dispatcher/speechd.conf; then if grep -q 'AudioOutputMethod' /etc/speech-dispatcher/speechd.conf; then sed -i -e "s|^.*AudioOutputMethod .*|#AudioOutputMethod \"pulse\"|g" /etc/speech-dispatcher/speechd.conf fi fi } disable_openal() { # nothing to do here. openal-soft is patched to prefer pulse but # it won't autostart the daemon. return 0 } disable_oss() { for app in $LIST_OF_OSS_APPS; do sed -i -e "/alias $app='padsp $app'/d" $PROFNAME done } disable_sdl() { echo "Disabling PulseAudio for SDL..." delete_variable SDL_AUDIODRIVER } disable_timidity() { echo "Disabling PulseAudio for Timidity..." sed -i -e "/alias timidity='timidity -Oe'/d" $PROFNAME } disable_xine() { #echo "Disabling PulseAudio for Xine..." # FIXME: xine uses $HOME/.xine/config return 0 } disable_festival() { test -f /etc/festival.scm || return 0 echo "Disabling PulseAudio for Festival..." /usr/bin/sed --in-place /";;;; Use pulseaudio to output sound"/d /etc/festival.scm /usr/bin/sed --in-place /"(Parameter.set 'Audio_Command \"paplay -n festival \$FILE\")"/d /etc/festival.scm /usr/bin/sed --in-place /"(Parameter.set 'Audio_Method 'Audio_Command)"/d /etc/festival.scm /usr/bin/sed --in-place /"(Parameter.set 'Audio_Required_Format 'snd)"/d /etc/festival.scm } disable_sox() { echo "Disabling PulseAudio for SoX..." set_variable AUDIODRIVER alsa } disable_gstreamer() { echo "Setting alsasink/src for gstreamer" setup_gconf_vendor -s -t str \ /system/gstreamer/0.10/default/audiosink alsasink setup_gconf_vendor -s -t str \ /system/gstreamer/0.10/default/musicaudiosink alsasink setup_gconf_vendor -s -t str \ /system/gstreamer/0.10/default/chataudiosink alsasink setup_gconf_vendor -s -t str \ /system/gstreamer/0.10/default/audiosrc alsasrc } disable_qemu () { echo "Clearing QEMU/KVM audio setup" delete_variable QEMU_AUDIO_DRV } disable_autospawn() { echo "Disabling PulseAudio autospawn..." if grep -q ^autospawn /etc/pulse/client.conf; then sed -i -e "s|^autospawn.*|autospawn = no|g" /etc/pulse/client.conf else echo "autospawn = no" >> /etc/pulse/client.conf fi # kill leftover PA processes killall pulseaudio > /dev/null 2>&1 } enable_all() { enable_alsa enable_libao enable_mplayer enable_openal enable_oss enable_sdl enable_timidity enable_xine enable_festival enable_phonon enable_kmix enable_speechd enable_sox enable_gstreamer enable_qemu enable_autospawn } disable_all() { disable_alsa disable_libao disable_mplayer disable_openal disable_oss disable_sdl disable_timidity disable_xine disable_festival disable_phonon disable_kmix disable_speechd disable_sox disable_gstreamer disable_qemu disable_autospawn } case $1 in --enable) check_root || exit 1 ENABLE=1 enable_all ;; --disable) check_root || exit 1 ENABLE=0 disable_all ;; --auto) check_root || exit 1 if [ -f /etc/sysconfig/sound ]; then . /etc/sysconfig/sound fi if [ "x$PULSEAUDIO_ENABLE" = "xyes" ]; then enable_all elif [ "x$PULSEAUDIO_ENABLE" = "xcustom" ]; then echo "Custom configuration detected, doing nothing." else disable_all fi exit 0 ;; --status) if [ -f /etc/sysconfig/sound ]; then . /etc/sysconfig/sound fi if [ "x$PULSEAUDIO_ENABLE" = "xyes" ]; then echo "enabled" elif [ "x$PULSEAUDIO_ENABLE" = "xcustom" ]; then echo "custom configured" else echo "disabled" fi exit 0 ;; *) show_help ;; esac # Now, update /etc/sysconfig/sound with the PA status if grep -q PULSEAUDIO_ENABLE /etc/sysconfig/sound; then if [ "x$ENABLE" = "x1" ]; then sed -i -e "s|PULSEAUDIO_ENABLE=\"no\"|PULSEAUDIO_ENABLE=\"yes\"|g" /etc/sysconfig/sound else sed -i -e "s|PULSEAUDIO_ENABLE=\"yes\"|PULSEAUDIO_ENABLE=\"no\"|g" /etc/sysconfig/sound fi else if [ "x$ENABLE" = "x1" ]; then echo "PULSEAUDIO_ENABLE=\"yes\"" >> /etc/sysconfig/sound else echo "PULSEAUDIO_ENABLE=\"no\"" >> /etc/sysconfig/sound fi fi exit 0 ++++++ suppress-socket-error-msg.diff ++++++ --- src/pulsecore/socket-client.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) Index: pulseaudio-0.99.2/src/pulsecore/socket-client.c =================================================================== --- pulseaudio-0.99.2.orig/src/pulsecore/socket-client.c +++ pulseaudio-0.99.2/src/pulsecore/socket-client.c @@ -253,7 +253,7 @@ static int sockaddr_prepare(pa_socket_cl c->local = pa_socket_address_is_local(sa); if ((c->fd = pa_socket_cloexec(sa->sa_family, SOCK_STREAM, 0)) < 0) { - pa_log("socket(): %s", pa_cstrerror(errno)); + /*pa_log("socket(): %s", pa_cstrerror(errno));*/ return -1; } ++++++ sysconfig.sound-pulseaudio ++++++ ## Path: Hardware/Soundcard/PulseAudio ## Description: PulseAudio configuration ## Type: list(yes,no,custom) # # Enable or disable PulseAudio system. Can be set to "custom" to not have # scripts automatically change sound-related configuration for PulseAudio. # PULSEAUDIO_ENABLE="yes" ## Path: Hardware/Soundcard/PulseAudio/SystemWide ## Description: System Wide PulseAudio ## Type: list(yes,no) # # Allows you to configure that you have system wide PulseAudio daemon. Such is # setup is not recommended. To make it work, you would need # pulseaudio-systemwide package and enable pulseaudio systemd service. If you # are not sure whether you want this, you don't. So unless you know what you # are doing, keep this set to "no". # PULSEAUDIO_SYSTEM="no" -- To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org For additional commands, e-mail: opensuse-commit+h...@opensuse.org