вот это файл
http://mia.ece.uic.edu/cgi-bin/lxr/http/source/pppd/md4.c?v=ppp-2.4.2_cvs_200306
10
208 void
209 MD4Update(MDp,X,count)
210 MD4_CTX *MDp;
211 unsigned char *X;
212 unsigned int count;
...
240 else if (count > 512) /* Check for count too large */
241 {
242 printf("\nError: MD4Update called with illegal count value %d.",
243 count);
244 return;
245 }
заменить на
224 { printf("\nError: MD4Update MD already done."); return; }
225 REP:;
226 /* Add count to MDp->count */
240 else if (count > 512) /* Check for count too large */
241 {
242 printf("\nError: MD4Update called with illegal count value %d.",
243 count);
244 count-=512;
MD4Update(MDp,X,512);
goto REP;
245 }
Написал на глаз...
вроде так(довольно грязно и низачотно).Если не заработает, то можно взять md4 из openssl.
Сильно напрягает : Fatal signal 11(segfault)
Вообще md4 это хэш-функция и у нее нет предела на размер данных.
тьфу.
240 else if (count > 512) /* Check for count too large */
241 {
242 printf("\nError: MD4Update called with illegal count value %d.",
243 count);
244 count-=512;
MD4Update(MDp,X,512);
X+=512;
goto REP;
245 }