Re: Segmentation Problem

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



John Love-Jensen wrote:
 char *s="",t;

Here you have allocated one byte of memory for s.

 int i,j,l,c=0;
 printf("\n Enter String to be Bit Stuffed : ");
 scanf("%s",s);

Here you are scanning into s.  The s buffer is only one byte long.
Depending on your compiler settings, the s buffer may be read-only (or maybe
not... my C is rusty, and perhaps I'm referring to a C++ -ism).  You have
not taken any precautions to insure that the scanf does not overflow the
buffer (out of bounds error, which could result in a SEGV).

IIRC, the code:

char *s = "hello";

...has an implicit cast-from-const (the RHS has type 'const char *'), and trying to write to it will raise a SEGV. Before gcc4 there was -fwrite-strings, which would put string constants in writable memory, but it's been deprecated for a LONG time and was removed in gcc4.

--
Matthew
"NT was a marketing name that stood for New Technology, but it was still an amusing coincidence that WNT was VMS with each letter replaced by the next one."
  -- Jeremy Reimer


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux