commit 482e56655e288aa953f79980de5dfa2a02ddbd72
Author: Sérgio M. Basto <sergio(a)serjux.com>
Date: Sat Feb 25 20:48:10 2023 +0000
Add last 8 commits from upstream
...ires-glib-2.0-since-libmms-no-longer-depe.patch | 6 +-
0002-Add-a-new-testfiledownload.c-example.patch | 192 +++++++++++++++++++++
0003-Fix-build-if-strndup-is-missing.patch | 70 ++++++++
...emove-redundant-comparison-in-file-mmsh.c.patch | 33 ++++
0005-Avoid-possible-overflow-in-sprintf.patch | 28 +++
...Fix-possible-NULL-Pointer-deref-in-mmsh.c.patch | 28 +++
0007-Add-check-for-sys-select.h-and-use-it.patch | 56 ++++++
0008-C89-fixes-for-Haiku.patch | 55 ++++++
libmms.spec | 20 ++-
9 files changed, 481 insertions(+), 7 deletions(-)
---
diff --git a/0001-Remove-Requires-glib-2.0-since-libmms-no-longer-depe.patch
b/0001-Remove-Requires-glib-2.0-since-libmms-no-longer-depe.patch
index 2248495..4ff4b7b 100644
--- a/0001-Remove-Requires-glib-2.0-since-libmms-no-longer-depe.patch
+++ b/0001-Remove-Requires-glib-2.0-since-libmms-no-longer-depe.patch
@@ -1,8 +1,8 @@
From b9bbe17c08e5dcbe3ce841e6bed52ce8d8b10f9e Mon Sep 17 00:00:00 2001
From: John Lindgren <john.lindgren(a)aol.com>
Date: Thu, 29 May 2014 22:42:53 -0400
-Subject: [PATCH] Remove "Requires: glib-2.0" since libmms no longer depends on
- GLib.
+Subject: [PATCH 1/8] Remove "Requires: glib-2.0" since libmms no longer
+ depends on GLib.
Signed-off-by: Hans de Goede <j.w.r.degoede(a)gmail.com>
---
@@ -24,5 +24,5 @@ index 602c967..a86d15a 100644
Libs: -L${libdir} -lmms -lm
Cflags: -I${includedir}
--
-2.0.0
+2.39.2
diff --git a/0002-Add-a-new-testfiledownload.c-example.patch
b/0002-Add-a-new-testfiledownload.c-example.patch
new file mode 100644
index 0000000..142520f
--- /dev/null
+++ b/0002-Add-a-new-testfiledownload.c-example.patch
@@ -0,0 +1,192 @@
+From 34060b0c0cb13eed323577becf72a13b43654c00 Mon Sep 17 00:00:00 2001
+From: Amit <chauhanamit067(a)users.sourceforge.net>
+Date: Thu, 19 Nov 2015 13:35:30 +0100
+Subject: [PATCH 2/8] Add a new testfiledownload.c example
+
+New test code which connects to a mms url and downloads this as a file
+to the local machine using mmsx_connect and mmsx_get_length().
+---
+ src/Makefile.am | 4 +-
+ src/testdownload.c | 29 ----------
+ src/testfiledownload.c | 114 +++++++++++++++++++++++++++++++++++++++
+ src/teststreamdownload.c | 29 ++++++++++
+ 4 files changed, 145 insertions(+), 31 deletions(-)
+ delete mode 100644 src/testdownload.c
+ create mode 100644 src/testfiledownload.c
+ create mode 100644 src/teststreamdownload.c
+
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 4fbb5c0..295cc34 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -1,4 +1,4 @@
+-# noinst_PROGRAMS = testconnect testdownload testswap
++# noinst_PROGRAMS = testconnect testfiledownload teststreamdownload testswap
+
+ lib_LTLIBRARIES = libmms.la
+
+@@ -46,5 +46,5 @@ INCLUDES = \
+ DEPS = $(top_builddir)/src/libmms.la
+ LDADD = $(top_builddir)/src/libmms.la
+
+-# libmms_test_SOURCES = testconnect.c testdownload.c testswap.c
++# libmms_test_SOURCES = testconnect.c testfiledownload.c teststreamdownload.c
testswap.c
+ # libmms_test_LDADD = $(LDADD)
+diff --git a/src/testfiledownload.c b/src/testfiledownload.c
+new file mode 100644
+index 0000000..cfef631
+--- /dev/null
++++ b/src/testfiledownload.c
+@@ -0,0 +1,114 @@
++/*
++ * Copyright (C) 2002-2004 the xine project
++ * Copyright (C) 2004-2012 the libmms project
++ *
++ * This file is part of LibMMS, an MMS protocol handling library.
++ * This file was originally a part of xine, a free video player.
++ *
++ * Libmms is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU Library General Public License as
++ * published by the Free Software Foundation; either version 2 of the
++ * License, or (at your option) any later version.
++ *
++ * Libmms 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 Library General Public
++ * License along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++ * 02111-1307, USA
++ * This file is created by : Amit Kumar (amit3.kumar(a)samsung.com)
++*/
++
++/* Sample program: Connect a mms URL and download media file on local machine. */
++
++
++
++
++
++#include<stdio.h>
++
++#include "mms.h"
++#include "mmsx.h"
++
++#define ERROR 1
++
++// Working MMS URL
++
++const char *url =
"mms://a1014.v1252931.c125293.g.vm.akamaistream.net/7/1014/125293/v0001/wm.od.origin.zdf.de.gl-systemhaus.de/none/zdf/09/09/090925_hinweis_geo_de_vh.wmv";
++
++int main()
++{
++ mmsx_t * pMMSX = NULL;
++ FILE* localFileHandle;
++ int loop, readMediaResult;
++ const char *localMediaName = "/tmp/mmsdownload.wmv";
++ char buf[1024];
++
++ //Here we make a connection to the passed URL.
++
++ if(pMMSX = mmsx_connect(NULL, NULL, url, 1024))
++ {
++ printf("Connect OK\n");
++ }
++ else
++ {
++ printf("Not connected\n");
++
++ return ERROR;
++ }
++
++ //Open file handler for local media file.
++
++ localFileHandle = fopen(localMediaName, "w");
++
++ if(!localFileHandle)
++ {
++ printf("Cannot open file to write\n");
++ return ERROR;
++ }
++ /*
++ **
++ * mmsx_get_time_length() function will calculate the time
++ * duration of media file.
++ **
++ */
++
++ printf("Time duration of media file = %lf\n",mmsx_get_time_length(pMMSX));
++
++ /*
++ **
++ * This loop will iterate total media length i.e. media size
++ * divided by buffer size. In our case buffer size is 1024.
++ **
++ */
++
++ for(loop = 0; loop < mmsx_get_length(pMMSX)/1024; loop++)
++ {
++ readMediaResult = mmsx_read (NULL, pMMSX, buf,1024);
++ if(!readMediaResult)
++ break;
++
++ //Finally, writing local media file.
++
++ fwrite(buf, 1, readMediaResult, localFileHandle);
++ }
++
++ // For print only
++
++ if(loop > 0)
++ {
++ printf("Reading file successfully and reading the file %d times\n",
loop);
++ }
++ else
++ {
++ printf("Failed to read from stream\n");
++ }
++
++ //closed opend handler here.
++
++ fclose(localFileHandle);
++ mmsx_close(pMMSX);
++}
+diff --git a/src/teststreamdownload.c b/src/teststreamdownload.c
+new file mode 100644
+index 0000000..21d2d56
+--- /dev/null
++++ b/src/teststreamdownload.c
+@@ -0,0 +1,29 @@
++#include <stdio.h>
++#include "mms.h"
++
++const char *url = "mms://od-msn.msn.com/3/mbr/apprentice_bts.wmv";
++
++int main(int argc, char *argv[])
++{
++ mms_t *this = NULL;
++ char buf[1024];
++ int i, res;
++ FILE* f;
++
++ if((this = mms_connect(NULL, NULL, url, 1)))
++ printf("Connect OK\n");
++ f = fopen("/tmp/mmsdownload.test", "w");
++ for(i = 0; i < 10000; i++)
++ {
++ res = mms_read(NULL, this, buf, 1024);
++ if(!res)
++ break;
++ fwrite(buf, 1, res, f);
++ }
++ if(i > 0)
++ printf("OK, read %d times\n", i);
++ else
++ printf("Failed to read from stream\n");
++
++
++}
+--
+2.39.2
+
diff --git a/0003-Fix-build-if-strndup-is-missing.patch
b/0003-Fix-build-if-strndup-is-missing.patch
new file mode 100644
index 0000000..64a0afd
--- /dev/null
+++ b/0003-Fix-build-if-strndup-is-missing.patch
@@ -0,0 +1,70 @@
+From 67d54003b8075b8ea8102bc4a808df4543ab113a Mon Sep 17 00:00:00 2001
+From: John Lindgren <john.lindgren(a)tds.net>
+Date: Thu, 19 Nov 2015 13:39:27 +0100
+Subject: [PATCH 3/8] Fix build if strndup() is missing
+
+---
+ configure.in | 1 +
+ src/uri.c | 27 +++++++++++++++++++++++++++
+ 2 files changed, 28 insertions(+)
+
+diff --git a/configure.in b/configure.in
+index 86b0e08..9209523 100755
+--- a/configure.in
++++ b/configure.in
+@@ -14,6 +14,7 @@ AC_PROG_INSTALL
+
+ dnl Checks for header files.
+ AC_CHECK_HEADERS([sys/socket.h netinet/in.h netdb.h windows.h winsock2.h])
++AC_CHECK_FUNCS([strndup])
+
+ case $host in
+ *beos*)
+diff --git a/src/uri.c b/src/uri.c
+index a96b900..ec28f3c 100644
+--- a/src/uri.c
++++ b/src/uri.c
+@@ -17,6 +17,10 @@
+ * Boston, MA 02111-1307, USA.
+ */
+
++#ifdef HAVE_CONFIG_H
++#include "config.h"
++#endif
++
+ #include <string.h>
+ #include <stdlib.h>
+ #include <ctype.h>
+@@ -125,6 +129,29 @@ for ($i = 0; $i < 32; $i++)
+ #define ISSPACE(C) (((C) >= 9 && (C) <= 13) || (C) == ' ')
+
+
++/* Implement the strndup function.
++ Copyright (C) 2005 Free Software Foundation, Inc.
++ Written by Kaveh R. Ghazi <ghazi(a)caip.rutgers.edu>. */
++#ifndef HAVE_STRNDUP
++char *
++strndup (const char *s, size_t n)
++{
++ char *result;
++ size_t len = strlen (s);
++
++ if (n < len)
++ len = n;
++
++ result = (char *) malloc (len + 1);
++ if (!result)
++ return 0;
++
++ result[len] = '\0';
++ return (char *) memcpy (result, s, len);
++}
++#endif
++
++
+ static int split_user_passwd(const char* in, char** user, char** passwd)
+ {
+ char *pass, *tmp = g_strdup(in);
+--
+2.39.2
+
diff --git a/0004-Patch-to-remove-redundant-comparison-in-file-mmsh.c.patch
b/0004-Patch-to-remove-redundant-comparison-in-file-mmsh.c.patch
new file mode 100644
index 0000000..c12e490
--- /dev/null
+++ b/0004-Patch-to-remove-redundant-comparison-in-file-mmsh.c.patch
@@ -0,0 +1,33 @@
+From 5cface3df0e0213d8bc593d82a9a7c1e648dd71a Mon Sep 17 00:00:00 2001
+From: Mahendra Narvariya <mahendra84(a)users.sourceforge.net>
+Date: Thu, 19 Nov 2015 13:42:30 +0100
+Subject: [PATCH 4/8] Patch to remove redundant comparison in file mmsh.c
+
+Variable uri can not be NULL at line no 665 as NULL check is already
+applied at line no 625.
+---
+ src/mmsh.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/mmsh.c b/src/mmsh.c
+index a019f05..dc17c9d 100755
+--- a/src/mmsh.c
++++ b/src/mmsh.c
+@@ -662,10 +662,10 @@ mmsh_t *mmsh_connect (mms_io_t *io, void *data, const char *url,
int bandwidth)
+ gnet_uri_delete(proxy_uri);
+ proxy_uri = NULL;
+ }
+- if (uri) {
+- gnet_uri_delete(uri);
+- uri = NULL;
+- }
++
++ gnet_uri_delete(uri);
++ uri = NULL;
++
+ if (!mms_valid_proto(this->proto)) {
+ lprintf("unsupported protocol\n");
+ goto fail;
+--
+2.39.2
+
diff --git a/0005-Avoid-possible-overflow-in-sprintf.patch
b/0005-Avoid-possible-overflow-in-sprintf.patch
new file mode 100644
index 0000000..838d64b
--- /dev/null
+++ b/0005-Avoid-possible-overflow-in-sprintf.patch
@@ -0,0 +1,28 @@
+From 8b5e303fc1f01521c727e351270dd68c4f15190b Mon Sep 17 00:00:00 2001
+From: Mahendra Narvariya <mahendra84(a)users.sourceforge.net>
+Date: Thu, 19 Nov 2015 13:45:52 +0100
+Subject: [PATCH 5/8] Avoid possible overflow in sprintf
+
+Avoid possible overflow in sprintf, better to use snprintf.
+---
+ src/mms.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/mms.c b/src/mms.c
+index c1dbc29..579c3f0 100644
+--- a/src/mms.c
++++ b/src/mms.c
+@@ -772,8 +772,8 @@ mms_t *mms_connect (mms_io_t *io, void *data, const char *url, int
bandwidth) {
+ mms_buffer_init(&command_buffer, this->scmd_body);
+ mms_buffer_put_32 (&command_buffer, 0x0003001C);
+ mms_gen_guid(this->guid);
+- sprintf(this->str, "NSPlayer/7.0.0.1956; {%s}; Host: %s", this->guid,
+- this->connect_host);
++ snprintf(this->str, sizeof(this->str), "NSPlayer/7.0.0.1956; {%s}; Host:
%s",
++ this->guid, this->connect_host);
+ res = mms_utf8_to_utf16le(this->scmd_body + command_buffer.pos,
+ CMD_BODY_LEN - command_buffer.pos,
+ this->str);
+--
+2.39.2
+
diff --git a/0006-Fix-possible-NULL-Pointer-deref-in-mmsh.c.patch
b/0006-Fix-possible-NULL-Pointer-deref-in-mmsh.c.patch
new file mode 100644
index 0000000..6293455
--- /dev/null
+++ b/0006-Fix-possible-NULL-Pointer-deref-in-mmsh.c.patch
@@ -0,0 +1,28 @@
+From 03fa0e92467f56028944e04478b19845c03daafd Mon Sep 17 00:00:00 2001
+From: Mahendra Narvariya <mahendra84(a)users.sourceforge.net>
+Date: Thu, 19 Nov 2015 14:03:40 +0100
+Subject: [PATCH 6/8] Fix possible NULL Pointer deref in mmsh.c
+
+---
+ src/mmsh.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/src/mmsh.c b/src/mmsh.c
+index dc17c9d..918e0a3 100755
+--- a/src/mmsh.c
++++ b/src/mmsh.c
+@@ -603,6 +603,11 @@ mmsh_t *mmsh_connect (mms_io_t *io, void *data, const char *url, int
bandwidth)
+ */
+ this = calloc(1, sizeof(mmsh_t));
+
++ if (!this) {
++ lprintf("error, calloc failed\n");
++ return NULL;
++ }
++
+ this->url = strdup(url);
+ if ((proxy_env = getenv("http_proxy")) != NULL)
+ this->proxy_url = strdup(proxy_env);
+--
+2.39.2
+
diff --git a/0007-Add-check-for-sys-select.h-and-use-it.patch
b/0007-Add-check-for-sys-select.h-and-use-it.patch
new file mode 100644
index 0000000..a65aac5
--- /dev/null
+++ b/0007-Add-check-for-sys-select.h-and-use-it.patch
@@ -0,0 +1,56 @@
+From 5d39f692d55c04839be78e470820f49d53e40bcb Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= <revol(a)free.fr>
+Date: Wed, 27 Mar 2019 02:14:03 +0100
+Subject: [PATCH 7/8] Add check for <sys/select.h> and use it
+
+POSIX says it's required for 'fd_set', and Haiku needs it.
+---
+ configure.in | 2 +-
+ src/mms.c | 3 +++
+ src/mmsh.c | 3 +++
+ 3 files changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/configure.in b/configure.in
+index 9209523..7434885 100755
+--- a/configure.in
++++ b/configure.in
+@@ -13,7 +13,7 @@ AC_PROG_LIBTOOL
+ AC_PROG_INSTALL
+
+ dnl Checks for header files.
+-AC_CHECK_HEADERS([sys/socket.h netinet/in.h netdb.h windows.h winsock2.h])
++AC_CHECK_HEADERS([sys/select.h sys/socket.h netinet/in.h netdb.h windows.h winsock2.h])
+ AC_CHECK_FUNCS([strndup])
+
+ case $host in
+diff --git a/src/mms.c b/src/mms.c
+index 579c3f0..bbeeb68 100644
+--- a/src/mms.c
++++ b/src/mms.c
+@@ -52,6 +52,9 @@
+ #endif
+ #include <string.h>
+ #include <sys/types.h>
++#ifdef HAVE_SYS_SELECT_H
++#include <sys/select.h>
++#endif
+ #include <sys/stat.h>
+ #include <fcntl.h>
+ #include <errno.h>
+diff --git a/src/mmsh.c b/src/mmsh.c
+index 918e0a3..cfaad94 100755
+--- a/src/mmsh.c
++++ b/src/mmsh.c
+@@ -55,6 +55,9 @@
+ #endif
+ #include <string.h>
+ #include <sys/types.h>
++#ifdef HAVE_SYS_SELECT_H
++#include <sys/select.h>
++#endif
+ #include <sys/stat.h>
+ #include <fcntl.h>
+ #include <errno.h>
+--
+2.39.2
+
diff --git a/0008-C89-fixes-for-Haiku.patch b/0008-C89-fixes-for-Haiku.patch
new file mode 100644
index 0000000..e2053e0
--- /dev/null
+++ b/0008-C89-fixes-for-Haiku.patch
@@ -0,0 +1,55 @@
+From a9f692323e597324e6f01263c12b6f4290d5b56f Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= <revol(a)free.fr>
+Date: Wed, 27 Mar 2019 02:14:37 +0100
+Subject: [PATCH 8/8] C89 fixes for Haiku
+
+---
+ src/mms-common-funcs.h | 14 +++++++++-----
+ 1 file changed, 9 insertions(+), 5 deletions(-)
+
+diff --git a/src/mms-common-funcs.h b/src/mms-common-funcs.h
+index 9e3c21d..f273756 100644
+--- a/src/mms-common-funcs.h
++++ b/src/mms-common-funcs.h
+@@ -205,12 +205,14 @@ static void interp_asf_header(TYPE *this)
+
+ case GUID_ASF_HEADER_EXTENSION:
+ {
++ int size;
++ int j = 24 + 18 + 4;
++ int l;
++
+ if ((24 + 18 + 4) > length)
+ break;
+
+- int size = LE_32(this->asf_header + i + 24 + 18);
+- int j = 24 + 18 + 4;
+- int l;
++ size = LE_32(this->asf_header + i + 24 + 18);
+ lprintf("Extension header data size: %d\n", size);
+
+ while ((j + 24) <= length) {
+@@ -249,16 +251,18 @@ static void interp_asf_header(TYPE *this)
+
+ // Loop through the number of extension system info
+ for (x = 0; x < ext_count && (ext_j + 22) <= l; x++) {
++ int len;
+ ext_j += 18;
+- int len = LE_16(this->asf_header + i + j + ext_j);
++ len = LE_16(this->asf_header + i + j + ext_j);
+ ext_j += 4 + len;
+ }
+
+ lprintf("ext_j: %d\n", ext_j);
+ // Finally, we arrive at the interesting point: The optional Stream
Property Object
+ if ((ext_j + 24) <= l) {
++ int len;
+ guid = get_guid(this->asf_header, i + j + ext_j);
+- int len = LE_64(this->asf_header + i + j + ext_j + 16);
++ len = LE_64(this->asf_header + i + j + ext_j + 16);
+ if (guid == GUID_ASF_STREAM_PROPERTIES &&
+ (ext_j + len) <= l) {
+ interp_stream_properties(this, i + j + ext_j + 24);
+--
+2.39.2
+
diff --git a/libmms.spec b/libmms.spec
index f81e2d9..aac604c 100644
--- a/libmms.spec
+++ b/libmms.spec
@@ -1,12 +1,21 @@
Name: libmms
Version: 0.6.4
-Release: 18%{?dist}
+Release: 19%{?dist}
Summary: Library for Microsoft Media Server (MMS) streaming protocol
License: LGPLv2+
URL:
http://www.sf.net/projects/libmms
Source0:
http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.gz
Patch1: 0001-Remove-Requires-glib-2.0-since-libmms-no-longer-depe.patch
+Patch2: 0002-Add-a-new-testfiledownload.c-example.patch
+Patch3: 0003-Fix-build-if-strndup-is-missing.patch
+Patch4: 0004-Patch-to-remove-redundant-comparison-in-file-mmsh.c.patch
+Patch5: 0005-Avoid-possible-overflow-in-sprintf.patch
+Patch6: 0006-Fix-possible-NULL-Pointer-deref-in-mmsh.c.patch
+Patch7: 0007-Add-check-for-sys-select.h-and-use-it.patch
+Patch8: 0008-C89-fixes-for-Haiku.patch
+
BuildRequires: gcc
+BuildRequires: libtool
%description
MMS is a proprietary streaming protocol used in Microsoft server products,
@@ -25,12 +34,12 @@ This package contains development files for %{name}.
%prep
-%setup -q
-%patch1 -p1
+%autosetup -p1
%build
-export CFLAGS="%{optflags} -Wno-pointer-sign"
+./autogen.sh
+export CFLAGS="%{optflags} -Wno-pointer-sign -Werror"
%configure --disable-dependency-tracking --disable-static
%make_build
@@ -55,6 +64,9 @@ rm $RPM_BUILD_ROOT%{_libdir}/%{name}.la
%changelog
+* Sat Feb 25 2023 Sérgio Basto <sergio(a)serjux.com> - 0.6.4-19
+- Add last 8 commits from upstream
+
* Sun Aug 07 2022 RPM Fusion Release Engineering <sergiomb(a)rpmfusion.org> -
0.6.4-18
- Rebuilt for
https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild and ffmpeg
5.1