popen win32: crash dans un service ?!

popen win32: crash dans un service ?! - C - Programmation

Marsh Posté le 26-05-2009 à 19:30:24    


J'dois être le seul con dans ce cas de figure, mais bon on tente quand même.
 
Voilà donc un truc tout bête: un CGI lancé depuis apache enregistré en tant que user LOCAL_SYSTEM fait un popen sur un programme tout aussi con: pouf crash:

Access Violation at location 77c3f463 in module msvcrt.dll Reading from location 00000000.


 
J'ai essayé un peu tout et n'importe quoi (programme inexistant, commande dos, ...), même résultat.
 
Quelqu'un d'autre serait tombé sur ce bug et/ou (gasp) aurait trouvé l'incantation à prononcer pour que ça marche ? Évidemment en passant par l'api Win32 style CreateProcess avec InheritHandle, ça marche, mais toute ma logique était basé sur stdio, va falloir tout refaire  :fou:  
 
 [:aldark] Bon, en attendant, j'ai une poupée voudoue de Stevie Monkey Ballmer à étriper.

Reply

Marsh Posté le 26-05-2009 à 19:30:24   

Reply

Marsh Posté le 26-05-2009 à 23:06:45    

Zieute s'il n'y a pas un patch Windows pour ça ?
Je précise que je ne sais rien de ton problème hein, mais juste ça me semble zarb que ça plante DANS msvcrt.dll sur un null read. :o

Reply

Marsh Posté le 27-05-2009 à 21:49:11    

Oué, j'ai pigé ce qui merdait.  
 
C'était un peu plus compliqué que ça en fait : le CGI était lancé depuis un FastCGI. Ce FastCGI n'avait pratiquement rien dans son environement (un petit détail qui m'est revenu bien trop tard).
 
Bref après moult bidouille, il suffisait de déclarer dans le FastCGI (dont le CGI héritait l'environement) :
 

Code :
  1. putenv("COMSPEC=C:\\WINDOWS\\system32\\cmd.exe" );


 
 :fou:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed