toshi@saturn.isl.melco.junet (Toshiyuki Game Player Ito) (04/24/89)
Dear FSF.
My name is ITO, TOSHIYUKI.
I installed GNU diff(v.1.4) on SYSV.R2 machine. But It wasn't succeed because
free(2) bug? on SYSV.
I try to
% diff <file> <dir>
Usually it acts diff <file> <dir>/<file> on SYSV and BSD. GNU diff dumps
core(bus error). This bug is caused at line 479 in diff.c
free (inf[dir_arg].name);
In this case, inf[dir_arg].name may be argv[1] or argv[2]. So free(2) tries to
free *argv pointer on SYSV, and core dumped later. Because SYSV dose not check
free address.
I patched diff.c. (see below)
*** diff.c Wed Apr 5 21:10:06 1989
--- ../gdiff/diff.c Thu Apr 13 13:30:58 1989
***************
*** 292,298 ****
--- 292,302 ----
switch_string = option_list (argv + 1, optind - 1);
+ #ifdef USG
+ val = compare_files (0, strcpy((char *) xmalloc(strlen(argv[optind]) + 1), argv[optind]), 0, strcpy((char *) xmalloc(strlen(argv[optind + 1]) + 1), argv[optind + 1]), 0);
+ #else
val = compare_files (0, argv[optind], 0, argv[optind + 1], 0);
+ #endif
/* Print any messages that were saved up for last. */
print_message_queue ();
I hope, this bug will be fixed, Thank you.
---------
ITO, TOSHIYUKI
Office: INFORMATION SYSTEMS & ELECTRONICS DEVELOPMENT LAB.
MITSUBISHI ELECTRIC CORPORATION
Address: 5-1-1 OFUNA KAMAKURA 247, JAPAN
PHONE: +81-467-44-9084
E-mail: toshi%isl.melco.co.jp@uunet.uu.net