vdr 2.1.2 segfaults in libc using vdr --genindex

Message ID 56BCDE31.4010206@t-online.de
State New
Headers

Commit Message

g.bruno Feb. 11, 2016, 7:17 p.m. UTC
  Dear Sirs,

the patch to the subject above, published on
http://www.linuxtv.org/pipermail/vdr/2013-December/028137.html
has several mistakes and is incomplete.

Here the results from the "patch" command):
root@amd8:/usr/local/src/vdr-2.1.2# patch -b --verbose ./vdr.c < vdr_c.patch
Hmm...  Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|--- vdr.c       2013/12/25 11:01:28     3.6
|+++ vdr.c       2013/12/25 11:24:26
--------------------------
patching file ./vdr.c
Using Plan A...
Hunk #1 FAILED at 223.
Hunk #2 FAILED at 443.
patch unexpectedly ends in middle of line
Hunk #3 FAILED at 663.
3 out of 3 hunks FAILED -- saving rejects to file ./vdr.c.rej
done
--------------------------------
and the contents of the file vdr.c.rej:

mailing list. Perhaps you can  correct my errors. if not, plaese let me 
know. Perhaps it is not a standard patch?
Greetings
G. Bruno
  

Comments

Klaus Schmidinger Feb. 12, 2016, 9:39 a.m. UTC | #1
On 11.02.2016 20:17, g.bruno wrote:
> Dear Sirs,
>
> the patch to the subject above, published on
> http://www.linuxtv.org/pipermail/vdr/2013-December/028137.html
> has several mistakes and is incomplete.
>
> ...

Maybe some whitespace problems.
The patch, however, ist part of the official VDR code.

Klaus
  
g.bruno Feb. 12, 2016, 2:50 p.m. UTC | #2
Hallo Klaus,

in how far your answer ("part of the official VDR code" is helping me? 
What shall I do? Anyway, patch does not work with your code. And also 
manually I fail.

Greetings G.Bruno

Am 12.02.2016 um 10:39 schrieb Klaus Schmidinger:
> On 11.02.2016 20:17, g.bruno wrote:
>> Dear Sirs,
>>
>> the patch to the subject above, published on
>> http://www.linuxtv.org/pipermail/vdr/2013-December/028137.html
>> has several mistakes and is incomplete.
>>
>> ...
>
> Maybe some whitespace problems.
> The patch, however, ist part of the official VDR code.
>
> Klaus
>
> _______________________________________________
> vdr mailing list
> vdr@linuxtv.org
> http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
  
Klaus Schmidinger Feb. 14, 2016, 9:01 a.m. UTC | #3
On 12.02.2016 15:50, g.bruno wrote:
> Hallo Klaus,
>
> in how far your answer ("part of the official VDR code" is helping me?

Sorry, I thought you didn't know that this patch has already been adopted.

>  What shall I do?

The best thing to do would probably be to switch to VDR version 2.2.0.

> Anyway, patch does not work with your code. And also manually I fail.

Come on, it's just three lines of code you need to insert ;-).

Klaus


> Am 12.02.2016 um 10:39 schrieb Klaus Schmidinger:
>> On 11.02.2016 20:17, g.bruno wrote:
>>> Dear Sirs,
>>>
>>> the patch to the subject above, published on
>>> http://www.linuxtv.org/pipermail/vdr/2013-December/028137.html
>>> has several mistakes and is incomplete.
>>>
>>> ...
>>
>> Maybe some whitespace problems.
>> The patch, however, ist part of the official VDR code.
>>
>> Klaus
  
g.bruno Feb. 14, 2016, 10:18 a.m. UTC | #4
Hallo Klaus,

I already tried VDR version 2.2.0, but it does not run, because the 
VDR-plugin-xineliboutput is missing for this Version. The Version I used 
with VDR 2.1.2 does not compile.
By the way: With VDR version 2.0.3 vdr --genindex works fine.

Greetings
G. Bruno


Am 14.02.2016 um 10:01 schrieb Klaus Schmidinger:
> On 12.02.2016 15:50, g.bruno wrote:
>> Hallo Klaus,
>>
>> in how far your answer ("part of the official VDR code" is helping me?
>
> Sorry, I thought you didn't know that this patch has already been adopted.
>
>>  What shall I do?
>
> The best thing to do would probably be to switch to VDR version 2.2.0.
>
>> Anyway, patch does not work with your code. And also manually I fail.
>
> Come on, it's just three lines of code you need to insert ;-).
>
> Klaus
>
>
>> Am 12.02.2016 um 10:39 schrieb Klaus Schmidinger:
>>> On 11.02.2016 20:17, g.bruno wrote:
>>>> Dear Sirs,
>>>>
>>>> the patch to the subject above, published on
>>>> http://www.linuxtv.org/pipermail/vdr/2013-December/028137.html
>>>> has several mistakes and is incomplete.
>>>>
>>>> ...
>>>
>>> Maybe some whitespace problems.
>>> The patch, however, ist part of the official VDR code.
>>>
>>> Klaus
>
> _______________________________________________
> vdr mailing list
> vdr@linuxtv.org
> http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
  
L. Hanisch Feb. 14, 2016, 11:56 a.m. UTC | #5
Hi,

Am 14.02.2016 um 11:18 schrieb g.bruno:
> Hallo Klaus,
> 
> I already tried VDR version 2.2.0, but it does not run, because the VDR-plugin-xineliboutput is missing for this
> Version. The Version I used with VDR 2.1.2 does not compile.

 Have you tried the latest commits from:
 git clone git://projects.vdr-developer.org/xineliboutput.git

 It's better to fix xineliboutput as to work with old vdr versions. :)
 If you have problems with compiling xineliboutput, please ask.

 At yavdr we use some patches to compile it with recent libcec versions. They are attached, look at the series files for
the order of the patches.

Lars.
  
g.bruno Feb. 14, 2016, 2:17 p.m. UTC | #6
Hallo Lars,

thanks for your advice. I tried it, git worked fine. But compiling still 
ends with an issue:

root@amd8:/usr/local/src/vdr-2.2.0/PLUGINS/src/GIT# git clone 
git://projects.vdr-developer.org/xineliboutput.git
Nach »xineliboutput« wird geklont
remote: Counting objects: 12082, done.
remote: Compressing objects: 100% (4899/4899), done.
remote: Total 12082 (delta 8391), reused 10777 (delta 7087)
Objekte werden empfangen: 100% (12082/12082), 5.86 MiB | 5.00 MiB/s, done.
Unterschiede werden aufgelöst: 100% (8391/8391), done.
Verbundenheit wird überprüft … Fertig.

root@amd8:/usr/local/src/vdr-2.2.0/PLUGINS/src/xineliboutput# make
Makefile:109: Building inside VDR source tree
g++ -g -O3 -Wall -Werror=overloaded-virtual -Wno-parentheses -fPIC -c 
-D_GNU_SOURCE -DPLUGIN_NAME_I18N='"xineliboutput"' -D_REENTRANT 
-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 
-DXINELIBOUTPUT_VERSION='"1.1.0"' -Wall -I../../../include  -o config.o 
config.c
config.c: In constructor ‘config_t::config_t()’:
config.c:706:31: error: ‘VideoDirectory’ was not declared in this scope
    strn0cpy(browse_files_dir,  VideoDirectory, sizeof(browse_files_dir));
                                ^
make: *** [config.o] Fehler 1
root@amd8:/usr/local/src/vdr-2.2.0/PLUGINS/src/xineliboutput#

It is the same as before. Do you have other ideas?

Greetings
G. Bruno

Am 14.02.2016 um 12:56 schrieb Lars Hanisch:

Hi,

Am 14.02.2016 um 11:18 schrieb g.bruno:
 > Hallo Klaus,
 >
 > I already tried VDR version 2.2.0, but it does not run, because the 
VDR-plugin-xineliboutput is missing for this
 > Version. The Version I used with VDR 2.1.2 does not compile.

  Have you tried the latest commits from:
  git clone git://projects.vdr-developer.org/xineliboutput.git

  It's better to fix xineliboutput as to work with old vdr versions. :)
  If you have problems with compiling xineliboutput, please ask.

  At yavdr we use some patches to compile it with recent libcec 
versions. They are attached, look at the series files for
the order of the patches.

Lars.
  
Alexander Grothe Feb. 14, 2016, 2:33 p.m. UTC | #7
Hello,

you cloned the git repository to 
/usr/local/src/vdr-2.2.0/PLUGINS/src/GIT/xineliboutput but you are 
trying to run make in /usr/local/src/vdr-2.2.0/PLUGINS/src/xineliboutput

Have another look at the the error message - the text for line 706 in 
config.c differs from the most recent version: 
https://projects.vdr-developer.org/git/xineliboutput.git/tree/config.c#n706

Alexander.
  
g.bruno Feb. 14, 2016, 3:47 p.m. UTC | #8
I tried the attached patches. Most of them ended with errors, see below.

-----------------------------------------------------
root@amd8:/usr/local/src/vdr-2.2.0/PLUGINS/src/xineliboutput# patch -N 
./Makefile debian.patch
patching file ./Makefile
Hunk #1 FAILED at 343.
1 out of 1 hunk FAILED -- saving rejects to file ./Makefile.rej
root@amd8:/usr/local/src/vdr-2.2.0/PLUGINS/src/xineliboutput#


root@amd8:/usr/local/src/vdr-2.2.0/PLUGINS/src/xineliboutput# ls -l 
xine_frontend.c
-rw-r--r-- 1 vdr users 59823 Aug 20  2013 xine_frontend.c
---------------------------------------------------
root@amd8:/usr/local/src/vdr-2.2.0/PLUGINS/src/xineliboutput# patch  -N 
./xine_frontend.c ./xineliboutput-dfatmo-switch
patching file ./xine_frontend.c
Hunk #1 succeeded at 1439 (offset 2 lines).
patching file ./xine_frontend.c
Hunk #1 FAILED at 455.
1 out of 1 hunk FAILED -- saving rejects to file ./xine_frontend.c.rej
patching file ./xine_frontend.c
Hunk #1 succeeded at 401 with fuzz 2 (offset 178 lines).
Hunk #2 succeeded at 1107 with fuzz 2 (offset 807 lines).
patching file ./xine_frontend.c
Hunk #1 FAILED at 218.
1 out of 1 hunk FAILED -- saving rejects to file ./xine_frontend.c.rej
---------------------------------------------
root@amd8:/usr/local/src/vdr-2.2.0/PLUGINS/src/xineliboutput# patch 
./config.c ./truecolor.diff
patching file ./config.c
Hunk #1 succeeded at 737 (offset -4 lines).
Hunk #2 succeeded at 760 (offset -4 lines).
Hunk #3 succeeded at 778 (offset -4 lines).
Hunk #4 succeeded at 898 (offset -4 lines).
patching file ./config.c
Hunk #1 FAILED at 294.
1 out of 1 hunk FAILED -- saving rejects to file ./config.c.rej
patching file ./config.c
Hunk #1 FAILED at 783.
1 out of 1 hunk FAILED -- saving rejects to file ./config.c.rej
patching file ./config.c
Hunk #1 FAILED at 160.
1 out of 1 hunk FAILED -- saving rejects to file ./config.c.rej
------------------------------------
root@amd8:/usr/local/src/vdr-2.2.0/PLUGINS/src/xineliboutput/xine# patch 
./xvdr_metronom.c ./fix-segfault.patch
patching file ./xvdr_metronom.c
-----------------------------------
xine_frontend_cec.c does not exist (twice), at least I could not find it
------------------------------
compiling with make failed:
root@amd8:/usr/local/src/vdr-2.2.0/PLUGINS/src/xineliboutput# make
Makefile:109: Building inside VDR source tree
g++ -g -O3 -Wall -Werror=overloaded-virtual -Wno-parentheses -fPIC -c 
-D_GNU_SOURCE -DPLUGIN_NAME_I18N='"xineliboutput"' -D_REENTRANT 
-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 
-DXINELIBOUTPUT_VERSION='"1.1.0"' -Wall -I../../../include  -o 
xineliboutput.o xineliboutput.c
xineliboutput.c: In member function ‘virtual bool 
cPluginXinelibOutput::Service(const char*, void*)’:
xineliboutput.c:295:22: error: ‘str’ was not declared in this scope
      if (!strncasecmp(str, "DFATMOENABLED", 13)) {
                       ^
xineliboutput.c:296:7: error: ‘fe’ was not declared in this scope
        fe->send_event(fe, str);
        ^
xineliboutput.c:297:7: error: continue statement not within a loop
        continue;
        ^
xineliboutput.c:299:22: error: ‘str’ was not declared in this scope
      if (!strncasecmp(str, "DFATMOENABLED", 13)) {
                       ^
xineliboutput.c:300:7: error: ‘fe’ was not declared in this scope
        fe->send_event(fe, str);
        ^
xineliboutput.c:301:7: error: continue statement not within a loop
        continue;
        ^
make: *** [xineliboutput.o] Fehler 1
----------------------------------------------
Did I make any mistakes? The version of the plugin is xineliboutput-1.1.0.
Are the patches for an other version of VDR? What do I do now? Any ideas?
G.Bruno

Am 14.02.2016 um 12:56 schrieb Lars Hanisch:
> Hi,
>
> Am 14.02.2016 um 11:18 schrieb g.bruno:
>> Hallo Klaus,
>>
>> I already tried VDR version 2.2.0, but it does not run, because the VDR-plugin-xineliboutput is missing for this
>> Version. The Version I used with VDR 2.1.2 does not compile.
>
>   Have you tried the latest commits from:
>   git clone git://projects.vdr-developer.org/xineliboutput.git
>
>   It's better to fix xineliboutput as to work with old vdr versions. :)
>   If you have problems with compiling xineliboutput, please ask.
>
>   At yavdr we use some patches to compile it with recent libcec versions. They are attached, look at the series files for
> the order of the patches.
>
> Lars.
>
>
>
> _______________________________________________
> vdr mailing list
> vdr@linuxtv.org
> http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
>
  

Patch

--- vdr.c       2013/12/25 11:01:28     3.6
+++ vdr.c       2013/12/25 11:24:26
@@ -223,6 +223,7 @@ 
     VdrUser = VDR_USER;
   #endif

+  cVideoDirectory::SetName(VideoDirectory);
     cPluginManager PluginManager(DEFAULTPLUGINDIR);

     static struct option long_options[] = {
@@ -443,6 +444,7 @@ 
             case 'v': VideoDirectory = optarg;
                       while (optarg && *optarg && optarg[strlen(optarg) 
- 1] == '/')
                             optarg[strlen(optarg) - 1] = 0;
+                    cVideoDirectory::SetName(VideoDirectory);
                       break;
             case 'w': if (isnumber(optarg)) {
                          int t = atoi(optarg);
@@ -663,7 +665,6 @@ 

     // Directories:

-  cVideoDirectory::SetName(VideoDirectory);
     if (!ConfigDirectory)
        ConfigDirectory = DEFAULTCONFDIR;
--------------------------------
I hope that I made it right. It is the first time that I write to this