Erreur de Compilation: stray ' 302’ Dans le programme etc

j'ai du mal à compiler le code d'exploitation suivant:

http://downloads.securityfocus.com/vulnerabilities/exploits/59846-1.c

j'utilise: "gcc file.C " et " fichier gcc-O2.c" mais les deux obtient les erreurs suivantes:

 sorbolinux-exec.c: In function ‘sc’:
 sorbolinux-exec.c:76: error: stray ‘2’ in program
 sorbolinux-exec.c:76: error: stray ‘4’ in program
 sorbolinux-exec.c:76: error: ‘t’ undeclared (first use in this function)
 sorbolinux-exec.c:76: error: (Each undeclared identifier is reported only  once
 sorbolinux-exec.c:76: error: for each function it appears in.)

j'ai essayé de les compiler sur Kali linux et Ubuntu 10.04 et obtenir le même résultat.

23
demandé sur Codo 2013-10-05 17:15:20

11 réponses

vous avez un caractère invalide sur cette ligne. C'est ce que j'ai vu:

enter image description here

21
répondu Yu Hao 2013-10-05 13:31:09

Vous avez des caractères invalides dans votre source. Si vous n'avez pas valide non ascii caractères dans votre code source, peut-être dans une double chaîne littérale, vous pouvez simplement convertir votre fichier en ascii:

tr -cd '-6' < old.c > new.c

Edit: la méthode avec iconv s'arrêtera sur les mauvais caractères, ce qui n'a aucun sens. La ligne de commande ci-dessus fonctionne avec le fichier d'exemple. Bonne chance :-)

11
répondu Klaus 2013-10-05 13:56:11

chaque fois que compilateur trouvé caractère spécial .. il donne à ces roi d'erreur de compilation .... quelle erreur j'ai trouvé est comme suit

erreur: stray '\302' Dans le programme et erreur: stray '\240' dans le programme

....

un morceau de code que j'ai copié à partir de messanger chatting. A messanger, il n'y avait que des personnages spéciaux.. après avoir copié dans l'éditeur de vim il a changé pour corriger le caractère seulement. Mais compilateur donnait au-dessus de l'erreur .. puis. . cette stamenet que j'ai écrite à mannualy après. . il a obtenu résoudre.. :)

1
répondu visu 2015-08-20 05:55:19

c'est peut-être parce que vous avez copié du code de net ( à partir d'un site qui n'a peut-être pas une page encodée en ASCII, mais une page encodée en UTF-8), donc vous pouvez convertir le code en ASCII à partir de ce site :

"http://www.percederberg.net/tools/text_converter.html"

là, vous pouvez soit détecter les erreurs manuellement en la convertissant en UTF-8, ou vous pouvez le convertir automatiquement en ASCII et supprimer tous les caractères errants.

1
répondu Agrim Gupta 2016-02-03 11:14:25

j'ai eu la même chose avec un caractère qui est apparu visiblement comme un astérisque, mais était une séquence UTF-8 à la place.

Encoder * st;

Lors de la compilation retourné:

g.c:2:1: error: stray ‘2’ in program
g.c:2:1: error: stray ‘0’ in program
g.c:2:1: error: stray ‘7’ in program

342 210 227 s'avère être UTF-8 pour opérateur D'astérisque.

supprimer le ' * ' et le taper à nouveau a corrigé le problème.

1
répondu TheMagicCow 2016-07-21 09:51:07

Codo avait tout à fait raison le 1er octobre. 5 que et courant[i] est le but du texte (avec le symbole de la devise par inadvertance introduit lorsque la source a été mis en HTML (voir l'original): http://downloads.securityfocus.com/vulnerabilities/exploits/59846-1.c

la modification de Codo rend ce code d'exploitation compilé sans erreur. J'ai fait cela et j'ai pu utiliser L'exploit sur Ubuntu 12.04 pour escalader les privilèges root.

0
répondu Eeyore 2013-11-14 08:35:31

Les explications données ici sont correctes. Je voulais juste ajouter que ce problème pourrait être parce que vous avez copié le code de quelque part, à partir d'un site web ou d'un fichier pdf en raison de laquelle il ya quelques caractères invalides dans le code.

essayez de trouver ces caractères invalides, ou tapez le code si vous ne pouvez pas. Il compilera certainement alors.

Source:errants erreur de raison

0
répondu Ravi Kant 2014-04-27 05:02:54

avec moi, cette erreur s'est produite lorsque j'ai copié et collé un code en format texte à mon éditeur (gedit). Le code était dans un document de texte (.odt) et j'ai copié et collé dans gedit. Si vous avez fait la même chose, vous avez réécrit manuellement le code.

0
répondu Lukasavicus 2014-07-08 15:54:10

j'ai remarqué un problème lors de l'utilisation de la commande tr ci-dessus. La tr de la commande COMPLETELY supprime le "guillemets". Il serait préférable de remplacer le "guillemets" avec quelque chose comme ça.

ceci vous donnera un aperçu rapide de ce qui sera remplacé.

sed s/[”“]/'"'/g File.txt

cela fera les remplacements et mettra le remplacement dans un nouveau fichier appelé WithoutSmartQuotes.txt.

sed s/[”“]/'"'/g File.txt > WithoutSmartQuotes.txt

ceci écrasera le fichier original.

sed -i ".bk" s/[”“]/'"'/g File.txt

http://developmentality.wordpress.com/2010/10/11/how-to-remove-smart-quotes-from-a-text-file/

0
répondu cokedude 2014-11-13 13:19:58

ce problème se produit lorsque vous avez copié du texte à partir de html ou que vous avez fait des modifications dans l'environnement windows et que vous essayez de compiler dans L'environnement Unix/Solaris.

s'il vous Plaît " dos2unix" pour supprimer les caractères spéciaux dans le fichier:

dos2unix nom de fichier.ext nom du fichier.ext

0
répondu Saifu Khan 2015-08-05 13:05:23

Changer le nom du fichier.c à un autre file423.C. cela peut être dû au conflit de noms entre les fichiers C.

-1
répondu Sujay Kumar 2015-03-03 13:51:36