Bug 2148324 - Got "Segmentation fault (core dumped)" when use %s to print first char of a string
Summary: Got "Segmentation fault (core dumped)" when use %s to print first char of ...
Keywords:
Status: CLOSED NOTABUG
Alias: None
Product: Red Hat Enterprise Linux 9
Classification: Red Hat
Component: gcc
Version: 9.2
Hardware: x86_64
OS: Linux
unspecified
medium
Target Milestone: rc
: ---
Assignee: Marek Polacek
QA Contact: qe-baseos-tools-bugs
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2022-11-25 02:18 UTC by Fine Fan
Modified: 2023-07-18 14:25 UTC (History)
5 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2022-11-25 08:17:19 UTC
Type: Bug
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Issue Tracker RHELPLAN-140427 0 None None None 2022-11-25 02:23:12 UTC

Description Fine Fan 2022-11-25 02:18:04 UTC
Description of problem:


Version-Release number of selected component (if applicable):
[root@el92-221124 c]# rpm -q gcc
gcc-11.3.1-2.1.el9.x86_64
[root@el92-221124 c]# rpm -q kernel
kernel-5.14.0-200.el9.x86_64
[root@el92-221124 c]# 


How reproducible:


Steps to Reproduce:
[root@el92-221124 c]# cat 18-3-String_s_first_char.c 
#include<stdio.h>


int main(){
    char greetings[] = "Hello World!";
    printf ("%s\n",greetings);

    printf ("%s\n",greetings[0]); // Here ,I should use %c


}
[root@el92-221124 c]# gcc -o 18-3-String_s_first_char 18-3-String_s_first_char.c 
[root@el92-221124 c]# ./18-3-String_s_first_char 
Hello World!
Segmentation fault (core dumped)
[root@el92-221124 c]# 


Actual results:
Segmentation fault (core dumped)

Expected results:
when call gcc -o 18-3-String_s_first_char 18-3-String_s_first_char.c 
Will get some error tips maybe?

Additional info:

Comment 1 Florian Weimer 2022-11-25 08:17:19 UTC
If you build with -Wall (enable most warnings), GCC does complain:

$ gcc -Wall 18-3-String_s_first_char.c 
18-3-String_s_first_char.c: In function ‘main’:
18-3-String_s_first_char.c:8:15: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘int’ [-Wformat=]
    8 |     printf ("%s\n",greetings[0]); // Here ,I should use %c
      |              ~^    ~~~~~~~~~~~~
      |               |             |
      |               char *        int
      |              %d

Address Sanitizer (-fsanitize=address) also catches the issue (but is not much more helpful than running the uninstrumented program under valgrind).

I'm not sure what else we can do here. This is just how C works, sorry.

Comment 2 Fine Fan 2022-11-28 07:05:11 UTC
Wow  Thanks.


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