Danke,
der Code lässt sich ohne Fehler compilieren. Ich habe es mit gcc -o
beisp beisp.c gemacht (cc ist bei mir ein Symlink auf gcc) weil die
Datei bei mir beisp.c heißt. Danach hatte die Datei beisp automatisch
die Rechte 755. Wenn ich nun ./beisp ausführe kommt:
bash: ./beisp: cannot execute binary file
Andere C Programme laufen in dem Verzeichniss mit den selben Rechten
einwandfrei. Liegt es an mir oder an dem Programm?
MfG
Bernhard
[EMAIL PROTECTED] schrieb:
rn fehlt ....
Oops, sieht ja wie code fuer Obfuscated C Contest :-(
sorry!
also nochmal als Text:
Kompillieren mit: cc -o strexmpl
strexmpl.c >>>>>>>>>>>>>> strexmpl.c
#include <stdio.h>
#define CUSTOM_PATH "/init/"
#define BUFLEN 1024
/*!
Original open Funktion. Hier als Dummy, nur fuer die Testausgaben
*/
int orig_open( const char* path, int flags ){
printf("orig_open( path=%s, flags=%d)n", path, flags );
}
/*!
Variante 1 mit Buffer fester Laenge.
Einerseits wird evtl. unnoetig viel Speicher reserviert, andererseits
(aber weniger wahrscheinlich) kann der reservierte Speicher nicht ausreichen
*/
int open1( const char* path, int flags ){
char buff[BUFLEN] = CUSTOM_PATH; // Buff enthaelt jetz "/init/
strcat (buff,path); // Nun steht komplette Path in Buff.
return orig_open( buff, flags );
}
/*!
Variante 2 nur tatsaechlich benoetigte Speichermenge dynamisch allokieren
*/
int open2( const char* path, int flags ){
char * buff = 0; // Zeiger Buff mit 0 (NULL) initialisiert
// Speicher mit korrekter Laenge (+1 wg. String-abschliessender Null) allokieren
// und den buff-Zeiger darauf zeigen lassen
buff = (char *) malloc ( strlen( CUSTOM_PATH ) + strlen(path) +1 );
strcpy(buff,CUSTOM_PATH); // Buff enthaelt jetz "/init/ strcat(buff,path); // Nun steht komplette Path in Buff.
return orig_open( buff, flags );
}
int main( int ac, char **al ){
printf("Tests fuer open1n");
// Testaufrufe
open1("etc/passwd", 0);
open1("usr/bin", 0);
open1("var/log/httpd.log", 0);
printf("nnTests fuer open2n");
// Testaufrufe
open2("etc/passwd", 0);
open2("usr/bin", 0);
open2("var/log/httpd.log", 0);
return 0;
}
<<<<<<<<<<<<<<<<<< eof
--
----------------------------------------------------------------------------
PUG - Penguin User Group Wiesbaden - http://www.pug.org