http://www.perlmonks.org?node_id=400934

Beechbone has asked for the wisdom of the Perl Monks concerning the following question:

We're using Net::SSH::Perl here and some time the last weeks something changed and we always get an error in one of our modules:
input must be 8 bytes long at /usr/local/perl/lib/site_perl/5.8.4/i686 +-linux/Crypt/DES.pm line 57.
Same happens when forcing Blowfish. I tracked the program execution down to this (DES code is identical):
Crypt/Blowfish.pm: Crypt::Blowfish::crypt($data, $data, $self->{'ks'}, 0); Crypt/Blowfish.xs: void blowfish_crypt(input, output, ks, dir) char * input = NO_INIT SV * output char * ks = NO_INIT STRLEN input_len = NO_INIT STRLEN output_len = NO_INIT STRLEN ks_len = NO_INIT int dir CODE: { input = (char *) SvPV(ST(0), input_len); if (input_len != 8) croak("input must be 8 bytes long");
We added debug code around the Perl code and it clearly states that $data is exactly 8 bytes long when given to the C function. It is a real string as as sure as $data = "$data"; can make. The data is just normal 8 bytes, I see no pattern in it, and it is not always the same data. One example would be (in hex): "0a ac 30 c6 f8 b1 e7 b9".

I'm clueless, any ideas?


Search, Ask, Know