Xiph.Org issueshttps://gitlab.xiph.org/groups/xiph/-/issues2022-09-14T08:41:54Zhttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2451a potential bug of NPD2022-09-14T08:41:54Zash1852a potential bug of NPDHi, I found a potential null pointer dereference bug in the project source code of libshout, and I have shown the execution sequence of the program that may generate the bug on the graph below. The red text illustrates the steps that gen...Hi, I found a potential null pointer dereference bug in the project source code of libshout, and I have shown the execution sequence of the program that may generate the bug on the graph below. The red text illustrates the steps that generate the bug,the file path can be seen in the blue framed section.
![getvar](/uploads/8fc4ca569f4f83b6f01a8c2ea5e57342/getvar.jpg)
what i am confused about is, there are some code snippets can be found in project that checking if return value of httpp_getvar equal to null, maybe the context in which the code snippet is located can asserts that the return value cannot be equal to null? but I haven't found such code can assert this.
Although the code shown is for the latest but is still exist in current version.would you help to check if this bug is true?thank you for your patience and effort!Philipp SchafftPhilipp Schaffthttps://gitlab.xiph.org/xiph/vorbis/-/issues/2347a potential bug of NPD2022-09-13T10:38:25Zash1852a potential bug of NPDHi, I found a potential null pointer dereference bug in the project source code of vorbis, and I have shown the execution sequence of the program that may generate the bug on the graph below. The red text illustrates the steps that gener...Hi, I found a potential null pointer dereference bug in the project source code of vorbis, and I have shown the execution sequence of the program that may generate the bug on the graph below. The red text illustrates the steps that generate the bug, the red arrows represent the control flow,the file path can be seen in the blue framed section.
![1662360760592](https://user-images.githubusercontent.com/87304478/188383134-07ef0506-a2c9-4a29-861a-b132c5c0d7f1.jpg)
Although the code shown is for version 1.3.6 but is still exist in current version
would you can help to check if this bug is true?thank you for your effort and patience!https://gitlab.xiph.org/xiph/icecast-libshout/-/issues/2336a potential NPD in source file src/proto_http.c2022-09-13T10:40:11Zash1852a potential NPD in source file src/proto_http.cHi, I found a potential null pointer dereference bug in the project source code of libshout, and I have shown the execution sequence of the program that may generate the bug on the graph below. The red text illustrates the steps that gen...Hi, I found a potential null pointer dereference bug in the project source code of libshout, and I have shown the execution sequence of the program that may generate the bug on the graph below. The red text illustrates the steps that generate the bug, the file path can be seen in the blue framed section.
![getvar](/uploads/d440a52b893294bb5844c94ffe3e2a93/getvar.jpg)
Although the code shown is for the latest but is still exist in current version.
What I'm confused about is, some empty judgment operation to return value of httpp_getvar can be found in some code snippets of the libshout project, so I'm not sure if the context of this snippet can assert that the call-statement won't return null, if so please give me some hints.thank you for checking if this bug is true.Philipp SchafftPhilipp Schaffthttps://gitlab.xiph.org/xiph/celt/-/issues/40.11.3: test suite is failing2024-01-22T12:01:11ZTomasz Kłoczko0.11.3: test suite is failing```console
+ /usr/bin/make -O -j48 V=1 VERBOSE=1 check
Making check in libcelt
/usr/bin/make check-TESTS
make[3]: Entering directory '/home/tkloczko/rpmbuild/BUILD/celt-0.11.3/libcelt'
PASS: match-test.sh
make[3]: Leaving directory '/ho...```console
+ /usr/bin/make -O -j48 V=1 VERBOSE=1 check
Making check in libcelt
/usr/bin/make check-TESTS
make[3]: Entering directory '/home/tkloczko/rpmbuild/BUILD/celt-0.11.3/libcelt'
PASS: match-test.sh
make[3]: Leaving directory '/home/tkloczko/rpmbuild/BUILD/celt-0.11.3/libcelt'
make[3]: Entering directory '/home/tkloczko/rpmbuild/BUILD/celt-0.11.3/libcelt'
============================================================================
Testsuite summary for
============================================================================
# TOTAL: 1
# PASS: 1
# SKIP: 0
# XFAIL: 0
# FAIL: 0
# XPASS: 0
# ERROR: 0
============================================================================
make[3]: Leaving directory '/home/tkloczko/rpmbuild/BUILD/celt-0.11.3/libcelt'
Making check in tests
/usr/bin/make check-TESTS
make[3]: Entering directory '/home/tkloczko/rpmbuild/BUILD/celt-0.11.3/tests'
PASS: type-test
make[3]: Leaving directory '/home/tkloczko/rpmbuild/BUILD/celt-0.11.3/tests'
make[3]: Entering directory '/home/tkloczko/rpmbuild/BUILD/celt-0.11.3/tests'
PASS: laplace-test
make[3]: Leaving directory '/home/tkloczko/rpmbuild/BUILD/celt-0.11.3/tests'
make[3]: Entering directory '/home/tkloczko/rpmbuild/BUILD/celt-0.11.3/tests'
PASS: mathops-test
make[3]: Leaving directory '/home/tkloczko/rpmbuild/BUILD/celt-0.11.3/tests'
make[3]: Entering directory '/home/tkloczko/rpmbuild/BUILD/celt-0.11.3/tests'
PASS: dft-test
make[3]: Leaving directory '/home/tkloczko/rpmbuild/BUILD/celt-0.11.3/tests'
make[3]: Entering directory '/home/tkloczko/rpmbuild/BUILD/celt-0.11.3/tests'
PASS: mdct-test
make[3]: Leaving directory '/home/tkloczko/rpmbuild/BUILD/celt-0.11.3/tests'
make[3]: Entering directory '/home/tkloczko/rpmbuild/BUILD/celt-0.11.3/tests'
FAIL: tandem-test
make[3]: Leaving directory '/home/tkloczko/rpmbuild/BUILD/celt-0.11.3/tests'
make[3]: Entering directory '/home/tkloczko/rpmbuild/BUILD/celt-0.11.3/tests'
PASS: ectest
make[3]: Leaving directory '/home/tkloczko/rpmbuild/BUILD/celt-0.11.3/tests'
make[3]: Entering directory '/home/tkloczko/rpmbuild/BUILD/celt-0.11.3/tests'
PASS: cwrs32-test
make[3]: Leaving directory '/home/tkloczko/rpmbuild/BUILD/celt-0.11.3/tests'
make[3]: Entering directory '/home/tkloczko/rpmbuild/BUILD/celt-0.11.3/tests'
============================
: tests/test-suite.log
============================
# TOTAL: 8
# PASS: 7
# SKIP: 0
# XFAIL: 0
# FAIL: 1
# XPASS: 0
# ERROR: 0
.. contents:: :depth: 2
FAIL: tandem-test
=================
Error: celt_decode returned unknown error
Error: celt_decode returned unknown error
Error: celt_decode returned unknown error
Error: at 30 bytes_per_frame celt_decode returned unknown error
CELT codec tests. Random seed: 3273316686 (0FC4)
Testing asynchronous tandeming (48000Hz, 1ch, 960 samples, 30 - 320 bytes).
FAIL tandem-test (exit status: 1)
============================================================================
Testsuite summary for
============================================================================
# TOTAL: 8
# PASS: 7
# SKIP: 0
# XFAIL: 0
# FAIL: 1
# XPASS: 0
# ERROR: 0
============================================================================
See tests/test-suite.log
============================================================================
```
content of the tests/test-suite.log
```console
============================
: tests/test-suite.log
============================
# TOTAL: 8
# PASS: 7
# SKIP: 0
# XFAIL: 0
# FAIL: 1
# XPASS: 0
# ERROR: 0
.. contents:: :depth: 2
FAIL: tandem-test
=================
Error: celt_decode returned unknown error
Error: celt_decode returned unknown error
Error: celt_decode returned unknown error
Error: at 30 bytes_per_frame celt_decode returned unknown error
CELT codec tests. Random seed: 3273316686 (0FC4)
Testing asynchronous tandeming (48000Hz, 1ch, 960 samples, 30 - 320 bytes).
FAIL tandem-test (exit status: 1)
```https://gitlab.xiph.org/xiph/celt/-/issues/30.11.3: autoreconf warnings2022-08-26T14:30:42ZTomasz Kłoczko0.11.3: autoreconf warningsautoconf 2.71
```
+ cd celt-0.11.3
+ autoreconf -fiv
autoreconf: export WARNINGS=
autoreconf: Entering directory '.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal --force
autoreconf: configure.ac: tracing
autor...autoconf 2.71
```
+ cd celt-0.11.3
+ autoreconf -fiv
autoreconf: export WARNINGS=
autoreconf: Entering directory '.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal --force
autoreconf: configure.ac: tracing
autoreconf: running: libtoolize --copy --force
libtoolize: putting auxiliary files in '.'.
libtoolize: copying file './ltmain.sh'
libtoolize: Consider adding 'AC_CONFIG_MACRO_DIRS([m4])' to configure.ac,
libtoolize: and rerunning libtoolize and aclocal.
libtoolize: Consider adding '-I m4' to ACLOCAL_AMFLAGS in Makefile.am.
autoreconf: configure.ac: not using Intltool
autoreconf: configure.ac: not using Gtkdoc
autoreconf: running: aclocal --force
autoreconf: running: /usr/bin/autoconf --force
configure.ac:5: warning: 'AM_CONFIG_HEADER': this macro is obsolete.
configure.ac:5: You should use the 'AC_CONFIG_HEADERS' macro instead.
./lib/autoconf/general.m4:2434: AC_DIAGNOSE is expanded from...
aclocal.m4:9962: AM_CONFIG_HEADER is expanded from...
configure.ac:5: the top level
configure.ac:29: warning: AM_INIT_AUTOMAKE: two- and three-arguments forms are deprecated.
./lib/autoconf/general.m4:2434: AC_DIAGNOSE is expanded from...
aclocal.m4:9610: AM_INIT_AUTOMAKE is expanded from...
configure.ac:29: the top level
configure.ac:33: warning: The macro `AM_PROG_LIBTOOL' is obsolete.
configure.ac:33: You should run autoupdate.
aclocal.m4:123: AM_PROG_LIBTOOL is expanded from...
configure.ac:33: the top level
configure.ac:35: warning: The macro `AC_PROG_CC_C99' is obsolete.
configure.ac:35: You should run autoupdate.
./lib/autoconf/c.m4:1659: AC_PROG_CC_C99 is expanded from...
configure.ac:35: the top level
configure.ac:44: warning: The macro `AC_TRY_COMPILE' is obsolete.
configure.ac:44: You should run autoupdate.
./lib/autoconf/general.m4:2847: AC_TRY_COMPILE is expanded from...
configure.ac:44: the top level
configure.ac:56: warning: The macro `AC_TRY_COMPILE' is obsolete.
configure.ac:56: You should run autoupdate.
./lib/autoconf/general.m4:2847: AC_TRY_COMPILE is expanded from...
configure.ac:56: the top level
configure.ac:72: warning: The macro `AC_HELP_STRING' is obsolete.
configure.ac:72: You should run autoupdate.
./lib/autoconf/general.m4:204: AC_HELP_STRING is expanded from...
aclocal.m4:9094: XIPH_PATH_OGG is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
configure.ac:72: the top level
configure.ac:72: warning: The macro `AC_TRY_RUN' is obsolete.
configure.ac:72: You should run autoupdate.
./lib/autoconf/general.m4:2997: AC_TRY_RUN is expanded from...
aclocal.m4:9094: XIPH_PATH_OGG is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
configure.ac:72: the top level
configure.ac:72: warning: The macro `AC_TRY_LINK' is obsolete.
configure.ac:72: You should run autoupdate.
./lib/autoconf/general.m4:2920: AC_TRY_LINK is expanded from...
aclocal.m4:9094: XIPH_PATH_OGG is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
configure.ac:72: the top level
configure.ac:135: warning: The macro `AC_WARN' is obsolete.
configure.ac:135: You should run autoupdate.
./lib/autoconf/oldnames.m4:33: AC_WARN is expanded from...
lib/m4sugar/m4sh.m4:699: AS_IF is expanded from...
./lib/autoconf/general.m4:1534: AC_ARG_ENABLE is expanded from...
configure.ac:135: the top level
configure.ac:158: warning: AC_LANG_CONFTEST: no AC_LANG_SOURCE call detected in body
./lib/autoconf/lang.m4:199: AC_LANG_CONFTEST is expanded from...
./lib/autoconf/general.m4:2823: _AC_COMPILE_IFELSE is expanded from...
./lib/autoconf/general.m4:2839: AC_COMPILE_IFELSE is expanded from...
configure.ac:158: the top level
configure.ac:211: warning: AC_OUTPUT should be used without arguments.
configure.ac:211: You should run autoupdate.
autoreconf: running: /usr/bin/autoheader --force
autoreconf: running: automake --add-missing --copy --force-missing
configure.ac:29: warning: AM_INIT_AUTOMAKE: two- and three-arguments forms are deprecated. For more info, see:
configure.ac:29: https://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_005fINIT_005fAUTOMAKE-invocation
configure.ac:33: installing './compile'
configure.ac:29: installing './missing'
libcelt/Makefile.am:35: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS')
libcelt/Makefile.am: installing './depcomp'
parallel-tests: installing './test-driver'
tests/Makefile.am:1: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS')
tools/Makefile.am:8: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS')
autoreconf: Leaving directory '.'
```https://gitlab.xiph.org/xiph/celt/-/issues/20.11.3: compile time warnings2022-08-26T14:29:08ZTomasz Kłoczko0.11.3: compile time warningsFirst just summary stats:
```
[tkloczko@pers-jacek SPECS]$ rpmbuild -ba --with check --with failing_tests celt051.spec --quiet 2>&1 | grep -- \\[-W | sed 's/.*\[//; s/\]//' | sort | uniq -c | sort -nr
15 -Wunused-result
7 -Wun...First just summary stats:
```
[tkloczko@pers-jacek SPECS]$ rpmbuild -ba --with check --with failing_tests celt051.spec --quiet 2>&1 | grep -- \\[-W | sed 's/.*\[//; s/\]//' | sort | uniq -c | sort -nr
15 -Wunused-result
7 -Wunused-but-set-variable
3 -Wunused-variable
1 -Wunused-const-variable=
1 -Wmaybe-uninitialized
```
And here is extracted stderr
```
modes.c: In function 'celt_mode_create':
modes.c:246:14: warning: unused variable 'mode' [-Wunused-variable]
246 | CELTMode *mode=NULL;
| ^~~~
celt.c: In function 'celt_encode_with_ec_float':
celt.c:1169:14: warning: unused variable 'offset' [-Wunused-variable]
1169 | int offset = st->mode->shortMdctSize-st->mode->overlap;
| ^~~~~~
celt.c:909:16: warning: unused variable 'pf_threshold' [-Wunused-variable]
909 | celt_word16 pf_threshold;
| ^~~~~~~~~~~~
celt.c:889:14: warning: variable '_overlap_mem' set but not used [-Wunused-but-set-variable]
889 | celt_sig *_overlap_mem;
| ^~~~~~~~~~~~
celt.c: In function 'celt_decode_with_ec_float':
celt.c:2231:8: warning: variable 'postfilter_tapset' set but not used [-Wunused-but-set-variable]
2231 | int postfilter_tapset;
| ^~~~~~~~~~~~~~~~~
celt.c:2224:16: warning: variable 'postfilter_gain' set but not used [-Wunused-but-set-variable]
2224 | celt_word16 postfilter_gain;
| ^~~~~~~~~~~~~~~
celt.c:2223:8: warning: variable 'postfilter_pitch' set but not used [-Wunused-but-set-variable]
2223 | int postfilter_pitch;
| ^~~~~~~~~~~~~~~~
celt.c: At top level:
celt.c:62:28: warning: 'tapset_icdf' defined but not used [-Wunused-const-variable=]
62 | static const unsigned char tapset_icdf[3]={2,1,0};
| ^~~~~~~~~~~
In file included from mdct-test.c:17:
../libcelt/mdct.c: In function 'clt_mdct_init':
../libcelt/mdct.c:65:12: warning: variable 'N2' set but not used [-Wunused-but-set-variable]
65 | int N4, N2;
| ^~
mdct-test.c: In function 'test1d':
mdct-test.c:92:17: warning: 'cfg.trig' may be used uninitialized [-Wmaybe-uninitialized]
92 | mdct_lookup cfg;
| ^
wav_io.c: In function 'write_wav_header':
wav_io.c:183:9: warning: variable 'ch' set but not used [-Wunused-but-set-variable]
183 | char ch[5];
| ^~
wav_io.c: In function 'read_wav_header':
wav_io.c:68:4: warning: ignoring return value of 'fread' declared with attribute 'warn_unused_result' [-Wunused-result]
68 | fread(ch, 1, 4, file);
| ^~~~~~~~~~~~~~~~~~~~~
wav_io.c:71:7: warning: ignoring return value of 'fread' declared with attribute 'warn_unused_result' [-Wunused-result]
71 | fread(&itmp, 4, 1, file);
| ^~~~~~~~~~~~~~~~~~~~~~~~
wav_io.c:78:7: warning: ignoring return value of 'fread' declared with attribute 'warn_unused_result' [-Wunused-result]
78 | fread(ch, 1, 4, file);
| ^~~~~~~~~~~~~~~~~~~~~
wav_io.c:91:4: warning: ignoring return value of 'fread' declared with attribute 'warn_unused_result' [-Wunused-result]
91 | fread(&itmp, 4, 1, file);
| ^~~~~~~~~~~~~~~~~~~~~~~~
wav_io.c:96:4: warning: ignoring return value of 'fread' declared with attribute 'warn_unused_result' [-Wunused-result]
96 | fread(&stmp, 2, 1, file);
| ^~~~~~~~~~~~~~~~~~~~~~~~
wav_io.c:104:4: warning: ignoring return value of 'fread' declared with attribute 'warn_unused_result' [-Wunused-result]
104 | fread(&stmp, 2, 1, file);
| ^~~~~~~~~~~~~~~~~~~~~~~~
wav_io.c:114:4: warning: ignoring return value of 'fread' declared with attribute 'warn_unused_result' [-Wunused-result]
114 | fread(&itmp, 4, 1, file);
| ^~~~~~~~~~~~~~~~~~~~~~~~
wav_io.c:118:4: warning: ignoring return value of 'fread' declared with attribute 'warn_unused_result' [-Wunused-result]
118 | fread(&itmp, 4, 1, file);
| ^~~~~~~~~~~~~~~~~~~~~~~~
wav_io.c:121:4: warning: ignoring return value of 'fread' declared with attribute 'warn_unused_result' [-Wunused-result]
121 | fread(&stmp, 2, 1, file);
| ^~~~~~~~~~~~~~~~~~~~~~~~
wav_io.c:124:4: warning: ignoring return value of 'fread' declared with attribute 'warn_unused_result' [-Wunused-result]
124 | fread(&stmp, 2, 1, file);
| ^~~~~~~~~~~~~~~~~~~~~~~~
wav_io.c:153:4: warning: ignoring return value of 'fread' declared with attribute 'warn_unused_result' [-Wunused-result]
153 | fread(ch, 1, 4, file);
| ^~~~~~~~~~~~~~~~~~~~~
wav_io.c:156:7: warning: ignoring return value of 'fread' declared with attribute 'warn_unused_result' [-Wunused-result]
156 | fread(&itmp, 4, 1, file);
| ^~~~~~~~~~~~~~~~~~~~~~~~
wav_io.c:162:7: warning: ignoring return value of 'fread' declared with attribute 'warn_unused_result' [-Wunused-result]
162 | fread(ch, 1, 4, file);
| ^~~~~~~~~~~~~~~~~~~~~
wav_io.c:171:4: warning: ignoring return value of 'fread' declared with attribute 'warn_unused_result' [-Wunused-result]
171 | fread(&itmp, 4, 1, file);
| ^~~~~~~~~~~~~~~~~~~~~~~~
celtenc.c: In function 'main':
celtenc.c:287:8: warning: variable 'print_bitrate' set but not used [-Wunused-but-set-variable]
287 | int print_bitrate=0;
| ^~~~~~~~~~~~~
celtenc.c:464:7: warning: ignoring return value of 'fread' declared with attribute 'warn_unused_result' [-Wunused-result]
464 | fread(first_bytes, 1, 12, fin);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```https://gitlab.xiph.org/xiph/speexdsp/-/issues/8Does not compile with ARM in THUMB mode2022-08-06T00:35:32ZRosen PenevDoes not compile with ARM in THUMB mode```
/tmp/cc6D2D3Y.s: Assembler messages:
/tmp/cc6D2D3Y.s:157: Error: selected FPU does not support instruction -- `vcvt.s32.f32 d0,d0,#15'
/tmp/cc6D2D3Y.s:158: Error: selected processor does not support `vqrshrn.s32 d0,q0,#15' in Thumb m...```
/tmp/cc6D2D3Y.s: Assembler messages:
/tmp/cc6D2D3Y.s:157: Error: selected FPU does not support instruction -- `vcvt.s32.f32 d0,d0,#15'
/tmp/cc6D2D3Y.s:158: Error: selected processor does not support `vqrshrn.s32 d0,q0,#15' in Thumb mode
/tmp/cc6D2D3Y.s:159: Error: selected FPU does not support instruction -- `vmov.s16 r3,d0[0]'
/tmp/cc6D2D3Y.s:244: Error: selected FPU does not support instruction -- `vmul.f32 q0,q4,q8'
/tmp/cc6D2D3Y.s:252: Error: selected FPU does not support instruction -- `vmul.f32 q0,q4,q8'
/tmp/cc6D2D3Y.s:253: Error: selected FPU does not support instruction -- `vmul.f32 q1,q5,q9'
/tmp/cc6D2D3Y.s:254: Error: selected FPU does not support instruction -- `vmul.f32 q2,q6,q10'
/tmp/cc6D2D3Y.s:255: Error: selected FPU does not support instruction -- `vmul.f32 q3,q7,q11'
/tmp/cc6D2D3Y.s:262: Error: selected FPU does not support instruction -- `vmla.f32 q0,q4,q8'
/tmp/cc6D2D3Y.s:263: Error: selected FPU does not support instruction -- `vmla.f32 q1,q5,q9'
/tmp/cc6D2D3Y.s:264: Error: selected FPU does not support instruction -- `vmla.f32 q2,q6,q10'
/tmp/cc6D2D3Y.s:265: Error: selected FPU does not support instruction -- `vmla.f32 q3,q7,q11'
/tmp/cc6D2D3Y.s:267: Error: selected FPU does not support instruction -- `vadd.f32 q4,q0,q1'
/tmp/cc6D2D3Y.s:268: Error: selected FPU does not support instruction -- `vadd.f32 q5,q2,q3'
/tmp/cc6D2D3Y.s:270: Error: selected FPU does not support instruction -- `vadd.f32 q0,q4,q5'
/tmp/cc6D2D3Y.s:275: Error: selected FPU does not support instruction -- `vmla.f32 q0,q6,q10'
/tmp/cc6D2D3Y.s:277: Error: selected FPU does not support instruction -- `vadd.f32 d0,d0,d1'
/tmp/cc6D2D3Y.s:278: Error: selected processor does not support `vpadd.f32 d0,d0,d0' in Thumb mode
```https://gitlab.xiph.org/xiph/vorbis/-/issues/2346About ogg123 can't adjust volumn2022-07-18T03:11:47ZHangAbout ogg123 can't adjust volumnDear All:
I'm really sorry to bother you,I am using vorbis-toos to develop and I want to adjust the volume,but I don't find the relevant usage method。
I don't know ogg123 is or not support adjust the volume with software method(Ps:I ha...Dear All:
I'm really sorry to bother you,I am using vorbis-toos to develop and I want to adjust the volume,but I don't find the relevant usage method。
I don't know ogg123 is or not support adjust the volume with software method(Ps:I have no sound card,only use pcm),Hope everybody helps answer,thanks very much!https://gitlab.xiph.org/xiph/icecast-server/-/issues/2445Finished streams are still shown as online and aren't cleared up by Icecast -...2022-11-12T17:15:38ZMole ManFinished streams are still shown as online and aren't cleared up by Icecast - have to kill the source to free up the mountpointHi guys,
I noticed that occasionally streamers end their stream but their stream is still shown as live on the server status page, you can't connect to the stream as a listener (VLC tries to connect forever) and the stream doesn't get ...Hi guys,
I noticed that occasionally streamers end their stream but their stream is still shown as live on the server status page, you can't connect to the stream as a listener (VLC tries to connect forever) and the stream doesn't get removed by Icecast after any period of time, so I have to kill the source in the admin UI to get rid of it. The source timeout in the limits section of the icecast.xml is set to 10 seconds. In the admin UI I can also see that no packets are transferred (params total_bytes_read and total_bytes_sent don't change), so Icecast should be able to see that the stream is inactive. This has happened to at least two different users/mountpoints and it happened twice this week to the same user, but it only happens sometimes. This does not seem to affect other mountpoints, other users can still start and stop streams while the zombie stream is on.
I also think that this only started to happen in the last few months, but the only change I implemented in that timespan was the addition of an SSL certificate and a mountpoint which uses SSL. The stream in the example wasn't encrypted though, so I don't think these things are related. I attached screenshots of the stuck stream in the admin console and of the access.log where the timestamps look suspicious to me, the message of the stream start looks like it was only logged when I killed the source the next day - though I might have misunderstood that part :-) better have a look for yourself, see the screenshot for more details. There was no heavy load or any other unusual events while this happened.
Impact: This leads to users not being able to reconnect to their own mountpoint in case they get disconnected until an admin manually kills the source.
Otherwise: Great software, runs smooth with minial administration overhead. Thanks in advance for checking!
Environment: Icecast 2.4.4 running on a VPS with CentOS 7
Limits:
<limits>
<clients>400</clients>
<sources>20</sources>
<threadpool>5</threadpool>
<queue-size>524288</queue-size>
<client-timeout>20</client-timeout>
<header-timeout>15</header-timeout>
<source-timeout>10</source-timeout>
<burst-on-connect>0</burst-on-connect>
<burst-size>65535</burst-size>
</limits>https://gitlab.xiph.org/xiph/icecast-server/-/issues/2444Setup pre-commit config2022-07-04T12:31:56ZJonas L.Setup pre-commit configI propose to add a https://pre-commit.com/ config to this repository to add code formatting/cleaning and few checks to keep the files in check.
Here is a config draft I propose:
```yml
---
# See https://pre-commit.com for more informati...I propose to add a https://pre-commit.com/ config to this repository to add code formatting/cleaning and few checks to keep the files in check.
Here is a config draft I propose:
```yml
---
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.3.0
hooks:
- id: check-added-large-files
- id: check-case-conflict
- id: check-executables-have-shebangs
- id: check-shebang-scripts-are-executable
- id: check-symlinks
- id: destroyed-symlinks
- id: check-json
- id: check-yaml
- id: check-xml
- id: check-merge-conflict
- id: end-of-file-fixer
- id: mixed-line-ending
- id: trailing-whitespace
- repo: https://github.com/pre-commit/mirrors-prettier
rev: v2.6.2
hooks:
- id: prettier
files: \.(md|yml|yaml)$
- repo: https://github.com/codespell-project/codespell
rev: v2.1.0
hooks:
- id: codespell
args:
- --builtin=clear,rare,informal
```
This would also mean to add a CI job to enforce those checks.
Personally it would make it easier for me to edit files using a IDE that automatically format and clean on save (which I consider a good practice), and prevent some spelling error to land in the code.https://gitlab.xiph.org/xiph/icecast-server/-/issues/2442CPU churning by Body and Request Queue thread2022-11-15T12:22:44ZLászló KárolyiCPU churning by Body and Request Queue threadas discussed on IRC, here's the long awaited 'official bug report' about 2.5 beta.
Whenever I run it on a server that can at times serve 1000 clients, after restart the thread name "Request Queue" starts consuming 100% CPU instantly. Af...as discussed on IRC, here's the long awaited 'official bug report' about 2.5 beta.
Whenever I run it on a server that can at times serve 1000 clients, after restart the thread name "Request Queue" starts consuming 100% CPU instantly. After a while, "Body Queue" does the same.
This ends up in a 2.2 load (15 min average) on a 4 CPU server.
The server is a standard Ubuntu (20.04.4 LTS), nothing extra added, using UFW.Philipp SchafftPhilipp Schaffthttps://gitlab.xiph.org/xiph/icecast-server/-/issues/24402.5 Beta not adhering to master-update-interval2022-05-17T19:14:44ZUmar Dockrat2.5 Beta not adhering to master-update-intervalGood Day,
I've set master-update-interval to every 5 seconds however based on the observered stream sync behaviour and relay server log messages:
```
[2022-05-15 22:52:39] INFO slave/update_from_master Master accepted streamlist reque...Good Day,
I've set master-update-interval to every 5 seconds however based on the observered stream sync behaviour and relay server log messages:
```
[2022-05-15 22:52:39] INFO slave/update_from_master Master accepted streamlist request
[2022-05-15 22:54:39] INFO slave/update_from_master Master accepted streamlist request
[2022-05-15 22:56:39] INFO slave/update_from_master Master accepted streamlist request
[2022-05-15 22:57:02] INFO slave/update_from_master Master accepted streamlist request
[2022-05-15 22:59:02] INFO slave/update_from_master Master accepted streamlist request
[2022-05-15 23:00:19] INFO slave/update_from_master Master accepted streamlist request
[2022-05-15 23:00:34] INFO slave/update_from_master Master accepted streamlist request
[2022-05-15 23:00:35] INFO slave/update_from_master Master accepted streamlist request
[2022-05-15 23:00:50] INFO slave/update_from_master Master accepted streamlist request
[2022-05-15 23:01:05] INFO slave/update_from_master Master accepted streamlist request
[2022-05-15 23:01:20] INFO slave/update_from_master Master accepted streamlist request
[2022-05-15 23:01:21] INFO slave/update_from_master Master accepted streamlist request
[2022-05-15 23:01:36] INFO slave/update_from_master Master accepted streamlist request
[2022-05-15 23:01:51] INFO slave/update_from_master Master accepted streamlist request
[2022-05-15 23:02:07] INFO slave/update_from_master Master accepted streamlist request
```
We can see the update is sporadic.
Master server running 2.4.5 relay server on beta.https://gitlab.xiph.org/xiph/icecast-server/-/issues/2439HTTP request EOF problem2022-05-07T15:37:59ZCsaba27HTTP request EOF problemHello, i have a problem with icecast 2.4.99 version, after the http response the icecast doesn't close the connection.
There is an example code from PHP:
```
<?php
// ini_set("default_socket_timeout", 5);
$start = microtime(true);
$...Hello, i have a problem with icecast 2.4.99 version, after the http response the icecast doesn't close the connection.
There is an example code from PHP:
```
<?php
// ini_set("default_socket_timeout", 5);
$start = microtime(true);
$fp = fsockopen("icecast-example-host.com", 8000, $errno, $errstr, 5);
if ($fp)
{
$out = "GET /status_json.xsl HTTP/1.1\r\n";
$out .= "Connection: Close\r\n";
$out .= "Host: icecast-example-host.com:8000\r\n";
$out .= "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36\r\n";
$out .= "\r\n";
fwrite($fp, $out);
// stream_set_timeout($fp, 5);
$line_count = 0;
while (!feof($fp))
{
$line_count++;
echo $line_count . " " . fgets($fp);
# echo fread($fp, 1024);
}
fclose($fp);
}
else
{
echo $errstr . " (" . $errno . ")" . PHP_EOL;
}
echo PHP_EOL . " " . round(microtime(true) - $start, 4);
```
Run in console and check the execution time (request time).Philipp SchafftPhilipp Schaffthttps://gitlab.xiph.org/xiph/icecast-server/-/issues/2438Segfault when public is "True"2022-11-09T10:21:58ZAlexey ParamonovSegfault when public is "True"[icecast_3.conf](/uploads/6b3b69fb7077a4dc5364951670846a74/icecast_3.conf)
Icecast 2.5 (Icecast 2.4.99.3) dies with a segfault if there are the following lines in the config file:
```
<public>1</public>
<stream-name>Click Yo...[icecast_3.conf](/uploads/6b3b69fb7077a4dc5364951670846a74/icecast_3.conf)
Icecast 2.5 (Icecast 2.4.99.3) dies with a segfault if there are the following lines in the config file:
```
<public>1</public>
<stream-name>Click Your Radio Dutch</stream-name>
<stream-description>The best in Dutch Music and Comedy</stream-description>
<stream-url>www.clickyourradio.com</stream-url>
<genre>Music &amp; Comedy</genre>
```
Complete config file is attachedPhilipp SchafftPhilipp Schaffthttps://gitlab.xiph.org/xiph/ezstream/-/issues/2279Invalid file not handled gracefully2022-08-20T02:16:22ZDan SanfordInvalid file not handled gracefullyAttached (invalid?) file causes segmentation fault, instead of simply skipping track.
https://drive.google.com/file/d/1JZkAor6vUN97fxKc_cCGAy9gwizYjYhG/view?usp=sharing
ezstream version 1.0.2
debian x64Attached (invalid?) file causes segmentation fault, instead of simply skipping track.
https://drive.google.com/file/d/1JZkAor6vUN97fxKc_cCGAy9gwizYjYhG/view?usp=sharing
ezstream version 1.0.2
debian x64Dan SanfordDan Sanfordhttps://gitlab.xiph.org/xiph/liboggz/-/issues/10support opus codec2022-04-29T00:36:54ZChristoph Anton Mitterersupport opus codecHey.
It seems the various tools have no idea about the opus codec. Would be nice if that could be supported instead of being shown as `unknown`.
Thanks,
Chris.Hey.
It seems the various tools have no idea about the opus codec. Would be nice if that could be supported instead of being shown as `unknown`.
Thanks,
Chris.https://gitlab.xiph.org/xiph/icecast-common/-/issues/8Build failure for mingw targets with latest Clang 152022-04-22T10:05:32ZMartin StorsjöBuild failure for mingw targets with latest Clang 15Building libshout for mingw targets, with the very latest (unreleased) Clang 15 fails, with this error:
```
../../../../src/common/timing/timing.c:73:5: error: call to undeclared function 'gettimeofday'; ISO C99 and later do not support...Building libshout for mingw targets, with the very latest (unreleased) Clang 15 fails, with this error:
```
../../../../src/common/timing/timing.c:73:5: error: call to undeclared function 'gettimeofday'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
gettimeofday(&mtv, NULL);
^
1 error generated.
```
With previous Clang versions, this was a nonfatal warning:
```
../../../../src/common/timing/timing.c:73:5: warning: implicit declaration of function 'gettimeofday' is invalid in C99 [-Wimplicit-function-declaration]
gettimeofday(&mtv, NULL);
^
1 warning generated.
```
Clang 15 has changed to make such implicit function declarations a hard error by default, see https://github.com/llvm/llvm-project/commit/7d644e1215b376ec5e915df9ea2eeb56e2d94626 for details.
Key parts of the arguments for it are:
> C89 had a questionable feature where the compiler would implicitly declare a function that the user called but was never previously declared. The resulting function would be globally declared as `extern int func();` -- a function without a prototype which accepts zero or more arguments.
>
> C99 removed support for this questionable feature due to severe security concerns. However, there was no deprecation period; C89 had the feature, C99 didn't. So Clang (and GCC) both supported the functionality as an extension in C99 and later modes.
>
> [...]
>
> However, because this feature will not be supported in C2x mode, we've diagnosed it as being invalid for so long, the security concerns with the feature, and the trivial workaround for users (declare the function), we now default the extension warning to an error in C99-C17 mode.
While Clang 15 still is unreleased, this policy may still change - but nevertheless, the warning is entirely valid in any case, and should be fixed.
The issue at hand is caused by the following parts in icecast-common's `timing/timing.c`:
```
#ifdef _WIN32
#include <windows.h>
#include <mmsystem.h>
#else
#ifdef TIME_WITH_SYS_TIME
# include <sys/time.h>
# include <time.h>
#else
# ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
# else
# include <time.h>
# endif
#endif
#include <unistd.h>
#endif
```
Followed by:
```
uint64_t timing_get_time(void)
{
#ifdef HAVE_GETTIMEOFDAY
struct timeval mtv;
gettimeofday(&mtv, NULL);
return (uint64_t)(mtv.tv_sec) * 1000 + (uint64_t)(mtv.tv_usec) / 1000;
#elif HAVE_FTIME
struct timeb t;
ftime(&t);
return t.time * 1000 + t.millitm;
#else
#error need time query handler
#endif
}
```
In the case of a mingw build, `HAVE_GETTIMEOFDAY` is defined, so the implementation of `timing_get_time` tries using `gettimeofday`. But the header inclusion block above only bothers to try to include `<sys/time.h>` if specifically running on a platform other than Windows.
Suggested fix:
Decouple the includes of `<sys/time.h>` and `<time.h>` from the `#ifdef _WIN32 ... #else` block. If `TIME_WITH_SYS_TIME` is defined, try to include both `<sys/time.h>` and `<time.h>`. If not, include `<time.h>` (which is a standard C header which I presume icecast can assume exists) and/or possibly `<sys/time.h>` (based on `HAVE_SYS_TIME_H` - which doesn't seem to be set by the configure script in libshout though).
```diff
diff --git a/timing/timing.c b/timing/timing.c
index 9be67d5..7efa776 100644
--- a/timing/timing.c
+++ b/timing/timing.c
@@ -35,8 +35,11 @@
#ifdef _WIN32
#include <windows.h>
#include <mmsystem.h>
#else
+#include <unistd.h>
+#endif
+
#ifdef TIME_WITH_SYS_TIME
# include <sys/time.h>
# include <time.h>
#else
@@ -46,11 +49,8 @@
# include <time.h>
# endif
#endif
-#include <unistd.h>
-#endif
-
#ifdef HAVE_SYS_SELECT_H
#include <sys/select.h>
#endif
```https://gitlab.xiph.org/xiph/icecast-server/-/issues/2437Provide systemd services (replace sysv scripts)2022-04-22T10:03:14ZJonas L.Provide systemd services (replace sysv scripts)Could you provide a systemd service and start replacing the old sysv scripts ?
A lot of distribution provided there own service files, but I was hoping to move those service files upstream.
- https://github.com/archlinux/svntogit-commu...Could you provide a systemd service and start replacing the old sysv scripts ?
A lot of distribution provided there own service files, but I was hoping to move those service files upstream.
- https://github.com/archlinux/svntogit-community/blob/5c80c74e8011a5f5ff31a4fff4769c96c7f07182/trunk/icecast.service
- https://src.fedoraproject.org/rpms/icecast/blob/rawhide/f/icecast.service
- Debian still relies on the sysv script, and I was hoping that once the service file is here, it would trickle down to Debian.https://gitlab.xiph.org/xiph/icecast-libshout/-/issues/2334Mixxx build patches2022-04-12T11:07:10ZDaniel SchürmannMixxx build patchesThis is the set of patches we apply in the Mixxx project to build libshout on Linux/Windows/MacOs.
[0006-Handle-unhandled-enum-values-in-switch-statements.patch](/uploads/697b5afa3df8c0a07efd437d36b2776b/0006-Handle-unhandled-enum-valu...This is the set of patches we apply in the Mixxx project to build libshout on Linux/Windows/MacOs.
[0006-Handle-unhandled-enum-values-in-switch-statements.patch](/uploads/697b5afa3df8c0a07efd437d36b2776b/0006-Handle-unhandled-enum-values-in-switch-statements.patch)
[0005-Verify-port-number-length.patch](/uploads/89e9c67e61740c4965d9141407c14c2c/0005-Verify-port-number-length.patch)
[0004-Fix-includes.patch](/uploads/716c9fa35c186257ef1431fb87ca865d/0004-Fix-includes.patch)
[0003-replace-illegal-void-arythmetric.patch](/uploads/f6f23b2338e477af3aa5d0c43372063b/0003-replace-illegal-void-arythmetric.patch)
[0002-fix-os.h.patch](/uploads/34c49851823f285aaeae15b3decca10b/0002-fix-os.h.patch)
[0001-Remove-unsused-strings.h.patch](/uploads/519033c12062e1d0a4cd010254840e73/0001-Remove-unsused-strings.h.patch)https://gitlab.xiph.org/xiph/icecast-server/-/issues/2435URL Auth does not post good port2022-04-07T17:32:54ZRa LawaURL Auth does not post good portHi,
URL Auth always posts the first listen-socket port configured in icecast.xml. When both http (port 80) and https (port 443) are enabled, url auth always send port=80 in the post request.
I think, it should send port=80 when the cli...Hi,
URL Auth always posts the first listen-socket port configured in icecast.xml. When both http (port 80) and https (port 443) are enabled, url auth always send port=80 in the post request.
I think, it should send port=80 when the client uses an http request and 443 when it uses an https request.
For url redirection, this would help to produce an url which depends on method used by the client. Redirection to an https url when client uses an https url and http otherwise.
Currently I use an other method to know which method is used. I patched url_add_client to send also tlsmode to the post request.Philipp SchafftPhilipp Schafft