Re: vdr 1.7.16 no longer cleans del records from video.01, video.02...

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 12 Oct 2010 23:56:16 +0200
Klaus Schmidinger <Klaus.Schmidinger@xxxxxxx> wrote:

> On 12.10.2010 17:50, Lou wrote:
> 
> The patch was originally suggested by "atinar" at
> 
>   http://www.vdr-portal.de/board/thread.php?postid=920661#post920661
> 
> and I adopted it with a suggestion from "Urig".
> Looks like nobody tested the patch in
> 
>   http://www.vdr-portal.de/board/thread.php?postid=936545#post936545
> 
> otherwise this malfunction might have been detected earlier ;-)
> 
> Unless "atinar" or somebody else comes up with a fixed version
> of this patch, I'll simply revert to the previous version.

Actually the only way the size of readlink() can
exceed the size of the filename, is if the encoding of the filename on
the linked-to directory is different, then the one of the original
file. Assuming UTF-8 has max 4 byte per character, int size =
strlen(buffer) * 4; should be fair enough. The length of the subtitle
should not matter, as the original filename should have the same
length as readlink if the encoding would be the same. 

If you don't want to make assumptions, i think this is the culprit:
+                             else if (n < size) {

as n is equal size (as we read the size before )

So this :
+                             else if (n < size) {
+                                l[n] = 0;
+                                dsyslog("removing %s", l);
+                                if (remove(l) < 0)
+                                   LOG_ERROR_STR(l);
+                                }
+                             else
+                                esyslog("ERROR: symlink name length
  (%d) exceeded anticipated buffer size (%d)", n, size);
+                             free(l);


should maybe be something like this:
+                             else {
+                                l[n] = 0;
+                                dsyslog("removing %s", l);
+                                if (remove(l) < 0)
+                                   LOG_ERROR_STR(l);
+                                }
+                             free(l);


_______________________________________________
vdr mailing list
vdr@xxxxxxxxxxx
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr


[Index of Archives]     [Linux Media]     [Asterisk]     [DCCP]     [Netdev]     [Xorg]     [Util Linux NG]     [Xfree86]     [Big List of Linux Books]     [Fedora Users]     [Fedora Women]     [ALSA Devel]     [Linux USB]

  Powered by Linux