Note: This is a beta release of Red Hat Bugzilla 5.0. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Also email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback here.
Bug 80675 - bad source code
Summary: bad source code
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Red Hat Linux
Classification: Retired
Component: kakasi
Version: 8.0
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Akira TAGOH
QA Contact: Bill Huang
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2002-12-29 17:41 UTC by d.binderman
Modified: 2007-04-18 16:49 UTC (History)
0 users

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2003-04-25 07:11:58 UTC


Attachments (Terms of Use)

Description d.binderman 2002-12-29 17:41:43 UTC
From Bugzilla Helper:
User-Agent: Mozilla/4.6 [en-gb]C-CCK-MCD NetscapeOnline.co.uk  (Win98; I)

Description of problem:

Hello there,

I have just tried to compile kakasi-2.3.4-8 from Redhat 8.0

Here are some of the messages the compiler produces

cc: Info: k2.c, line 157: In this statement, an array is being accessed outside
the bounds specified for the array type. (subscrbounds)
cc: Info: libk2.c, line 157: In this statement, an array is being accessed outside the bounds specified for the array type. (subscrbounds)

Here is an untested patch to shut up the compiler.

./src/k2.c.old ./src/k2.c
*** ./src/k2.c.old	Sun Dec 15 18:14:11 2002
--- ./src/k2.c	Sun Dec 15 18:17:04 2002
***************
*** 140,146 ****
      static struct k2rom_tbl *k2rom_ptr;
      struct k2rom_tbl *p;
      int i, clen, ylen;
!     char buffer[k2rom_buflen];
      unsigned char c1;
      int max_match, match_more;
      char *max_romaji;
--- 140,146 ----
      static struct k2rom_tbl *k2rom_ptr;
      struct k2rom_tbl *p;
      int i, clen, ylen;
!     char buffer[ k2rom_buflen + 1];
      unsigned char c1;
      int max_match, match_more;
      char *max_romaji;
./lib/libk2.c.old ./lib/libk2.c


Version-Release number of selected component (if applicable):


How reproducible:
Always

Steps to Reproduce:
1. compile with any C compiler that sanity checks array indices, such as Compaq.
2.
3.
    

Additional info:

Comment 1 Akira TAGOH 2003-04-24 14:20:20 UTC
I not sure whether it's happened at this point, but right now I don't think
kakasi still has a problem. although 'buffer' is actually allocated for
k2rom_buflen(10) spaces, and basically it allows to use 9 spaces for something
and 1 space for null string. So:

    buffer[k2rom_buflen] = '\0'; clen = k2rom_buflen;
    for (i = 0; i < k2rom_buflen; ++ i) {

these codes are fine. I can't see any codes to be having the problems.
I think that's a compiler bug or excessive warning.

Comment 2 d.binderman 2003-04-24 18:40:00 UTC
I can't believe your answer. 

It is standard C that if an array of size 'n' is declared, then the array 
index 'n' should not be used. Lower limits are inclusive, upper limits
are exclusive.

I strongly recommend reading page 22, section 1.6, of Kernighan & Ritchie
Edition 2, the standard book on the C programming language.




Comment 3 Akira TAGOH 2003-04-25 04:40:57 UTC
You are right. I was confused.

Comment 4 Akira TAGOH 2003-04-25 07:11:58 UTC
fixed in 2.3.4-11


Note You need to log in before you can comment on or make changes to this bug.