Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NET::Cmd incorrectly parsing new lines #12328

Closed
p5pRT opened this issue Aug 12, 2012 · 4 comments
Closed

NET::Cmd incorrectly parsing new lines #12328

p5pRT opened this issue Aug 12, 2012 · 4 comments

Comments

@p5pRT
Copy link

p5pRT commented Aug 12, 2012

Migrated from rt.perl.org#114458 (status was 'resolved')

Searchable as RT114458$

@p5pRT
Copy link
Author

p5pRT commented Aug 12, 2012

From savage@savage.za.org

Created by savage@savage.za.org

Net​::Cmd incorrectly detects and breaks new lines. RFC3977 (NNTP) states that all lines should be
terminated with a \r\n characters. Net​::Cmd searches for any occurance of \r\n or \n and replaces
the line breaks with an \n only. In addition \r\n or \n characters matches inside binary
attachments to NNTP articles causing the attachments to become corrupt.

The offending code SEEMS to be arround line 300​:
  substr($buf, 0, 0) = $partial; ## prepend from last sysread
  my @​buf = split(/\015?\012/, $buf, -1); ## break into lines
  $partial = pop @​buf;
  push(@​{${*$cmd}{'net_cmd_lines'}}, map {"$_\n"} @​buf);

Perl Info

Flags:
    category=library
    severity=high
    module=Net::Cmd

Site configuration information for perl 5.14.2:

Configured by Debian Project at Fri Mar 23 17:14:02 UTC 2012.

Summary of my perl5 (revision 5 version 14 subversion 2) configuration:
   
  Platform:
    osname=linux, osvers=2.6.24-31-server, archname=x86_64-linux-gnu-thread-multi
    uname='linux allspice 2.6.24-31-server #1 smp tue feb 14 13:12:22 utc 2012 x86_64 x86_64 x86_64 gnulinux '
    config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -Dcccdlflags=-fPIC -Darchname=x86_64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.14 -Darchlib=/usr/lib/perl/5.14 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.14.2 -Dsitearch=/usr/local/lib/perl/5.14.2 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -DDEBUGGING=-g -Doptimize=-O2 -Duseshrplib -Dlibperl=libperl.so.5.14.2 -des'
    hint=recommended, useposix=true, d_sigaction=define
    useithreads=define, usemultiplicity=define
    useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
    use64bitint=define, use64bitall=define, uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
    optimize='-O2 -g',
    cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include'
    ccversion='', gccversion='4.6.3', gccosandvers=''
    intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
    ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
    alignbytes=8, prototype=define
  Linker and Libraries:
    ld='cc', ldflags =' -fstack-protector -L/usr/local/lib'
    libpth=/usr/local/lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib /usr/lib
    libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt
    perllibs=-ldl -lm -lpthread -lc -lcrypt
    libc=, so=so, useshrplib=true, libperl=libperl.so.5.14.2
    gnulibc_version='2.15'
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
    cccdlflags='-fPIC', lddlflags='-shared -O2 -g -L/usr/local/lib -fstack-protector'

Locally applied patches:
    


@INC for perl 5.14.2:
    /etc/perl
    /usr/local/lib/perl/5.14.2
    /usr/local/share/perl/5.14.2
    /usr/lib/perl5
    /usr/share/perl5
    /usr/lib/perl/5.14
    /usr/share/perl/5.14
    /usr/local/lib/site_perl
    .


Environment for perl 5.14.2:
    HOME=/home/cknipe
    LANG=en_ZA.UTF-8
    LANGUAGE=en_ZA:en
    LD_LIBRARY_PATH (unset)
    LOGDIR (unset)
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    PERL_BADLANG (unset)
    SHELL=/bin/bash

@p5pRT
Copy link
Author

p5pRT commented Aug 12, 2012

From @jkeenan

On Sun Aug 12 02​:18​:21 2012, cknipe wrote​:

This is a bug report for perl from savage@​savage.za.org,
generated with the help of perlbug 1.39 running under perl 5.14.2.

-----------------------------------------------------------------
[Please describe your issue here]
Net​::Cmd incorrectly detects and breaks new lines. RFC3977 (NNTP)
states that all lines should be
terminated with a \r\n characters. Net​::Cmd searches for any
occurance of \r\n or \n and replaces
the line breaks with an \n only. In addition \r\n or \n characters
matches inside binary
attachments to NNTP articles causing the attachments to become
corrupt.

The offending code SEEMS to be arround line 300​:
substr($buf, 0, 0) = $partial; ## prepend from last sysread
my @​buf = split(/\015?\012/, $buf, -1); ## break into lines
$partial = pop @​buf;
push(@​{${*$cmd}{'net_cmd_lines'}}, map {"$_\n"} @​buf);

Net​::Cmd is part of the 'libnet' distribution, which is maintained on
CPAN. Accordingly, I have forwarded this bug report to that
distribution's bug queue at rt.cpan.org.

Please refer to​:
https://rt.cpan.org/Ticket/Display.html?id=78922

Thank you very much.
Jim Keenan

@p5pRT
Copy link
Author

p5pRT commented Aug 12, 2012

The RT System itself - Status changed from 'new' to 'open'

@p5pRT
Copy link
Author

p5pRT commented Aug 12, 2012

@jkeenan - Status changed from 'open' to 'resolved'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant