<?xml version="1.0" encoding="windows-1252"?>
<node id="400934" title="Weird error with Cryprt::Blowfish and Crypt::DES" created="2004-10-20 14:07:42" updated="2005-07-16 11:32:56">
<type id="115">
perlquestion</type>
<author id="85294">
Beechbone</author>
<data>
<field name="doctext">
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:

&lt;code&gt;
input must be 8 bytes long at /usr/local/perl/lib/site_perl/5.8.4/i686-linux/Crypt/DES.pm line 57.
&lt;/code&gt;

Same happens when forcing Blowfish. I tracked the program execution down to this (DES code is identical):

&lt;code&gt;
Crypt/Blowfish.pm:
        Crypt::Blowfish::crypt($data, $data, $self-&gt;{'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");
&lt;/code&gt;

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 &lt;code&gt;$data = "$data";&lt;/code&gt; 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".&lt;p&gt;

I'm clueless, any ideas?

&lt;div class="pmsig"&gt;&lt;div class="pmsig-85294"&gt;
&lt;hr&gt;&lt;small&gt;&lt;sub&gt;Search,&lt;/sub&gt; Ask, &lt;sup&gt;Know&lt;/sup&gt;&lt;/small&gt;
&lt;/div&gt;&lt;/div&gt;</field>
</data>
</node>
