Ethical Hacking

Learn to find vulnerabilities before the bad guys do! Gain real world hands on hacking experience in our state of the art hacking lab. Course designed and taught by expert instructors with years of penetration testing experience. 12 student maximum in every class. Certification attempt included in every package.
Computer Forensics Training at InfoSec Institute

Gain the in-demand skills of a certified computer examiner, learn to recover trace data left behind by fraud, theft, and cybercrime perpetrators. Discover the source of computer crime and abuse at your organization so that it never happens again. All of our class sizes are guaranteed to be 12 students or less to facilitate one-on-one interaction with one of our expert instructors.




Network Security Focus-Sun
[Top] [All Lists]

Re: Sun Studio 11: C++ 5.8 Compiler

Subject: Re: Sun Studio 11: C++ 5.8 Compiler
Date: Mon, 16 Apr 2007 23:53:42 -0700
focus-sun Digest 16 Apr 2007 17:18:39 -0000 Issue 372

Sun Studio 11: C++ 5.8 Compiler
                 1456 by: neelabhsharma1.gmail.com

[...]

As per the specifications the compiler should be based on C99. But i think 
it still does not handle the function call strtoll(). This issue did not 
arise with RHL 9.0

If it did the handling properly then the result of the program should not 
be 0.


/*Snippet of the Code */
#include<stdio.h>
#include<stdlib.h>

int main()
{
char *a = "89abcdef";
long long int c;
a[8] = '\0';
c = strtoll(a, NULL, 16); 
printf("the num is %8x", c); 
return 0;
}


My understanding of the OS, Platform (SPARC), ofcourse C is just of a 
beginner and am eager to learn, please provide supporting comments..



[JL:
Did you say C or C++?  C++ is still based on the 1998 C++ standard, which 
in turn is based on C90 and not on C99.  Hence things like long long are 
(most likely) not part of the base C++ configuration - it is likely that 
you would have to enable such extensions in C++ by special options.  {That 
was a guess - investigation shows it is a wrong guess...read on.}

Which bits of the manual did you read?

Tested on Solaris 10 with
Black JL: cc -V
cc: Sun C 5.8 2005/10/13
usage: cc [ options] files.  Use 'cc -flags' for details
Black JL: CC -V
CC: Sun C++ 5.8 2005/10/13

Also, the code must be fixed - %8x prints an integer, not a long long int, 
so the format string needs to end "%8llx\n".

The C compiler is fine with the fixed code.   The C++ compiler says:

CC -O x.c -o x && ./x
"x.c", line 6: Warning: String literal converted to char* in 
initialization.
1 Warning(s) detected.
Segmentation Fault(coredump)

Hmmm...that's because you try to modify the string literal at x[8] = '\0' 
- which is a pointless exercise (the value is already '\0').  The warning 
is because it should be a const char * you assign to.  With that fixed, 
even CC compiles it and runs it OK.

So, you don't even have to enable long long in CC - it just works with 
correct code.
]


-- 
Jonathan Leffler (jleffler@us.ibm.com)
STSM, Informix Database Engineering, IBM Information Management Division
4100 Bohannon Drive, Menlo Park, CA 94025-1013
Tel: +1 650-926-6921    Tie-Line: 630-6921
"I don't suffer from insanity; I enjoy every minute of it!"


<Prev in Thread] Current Thread [Next in Thread>