Data Abort Exception auf at91sam7x256

OP #3576868
Lesenswert?
• ▲
▼
Hallo,

ich ekomme durch einen nicht nachvollziehbaren Fehler eine Data Abort 
Exceoption, auf einem at91sam7x256, geschmissen. Warum kann ich nicht 
sagen, daher poste ich einfach mal den relevanten Code.
1
void ecbMode(char* key)
2
{
3
  ...
4
  char expandedKeys[240] = { 0 };
5
  ...
6
  aesEncrypt(..., key, expandedKeys);
7
  ...    
8
}
9

10

11
void aesEncrypt(..., char* key, char* expandedKey)
12
{
13
  char roundKey[16] = { 0 };
14
  expandKey(expandedKey, expandedKeySize, cipherKey, keySize);
15
  ...
16
  roundKey[0] = expandedKey[0];        // DATA ABORT EXCEPTION
17
  ...
18
}

Nachdem expandKey(); durchgeführt wurde(darin wird einfach der 16 Byte 
lange Schlüssel auf maximal 240 Byte vergrößert), möchte ich gerne 
einzelne Werte aus diesem Array anderen Variablen zuweisen. Aber genau 
in diesem Augenblick knallt es immer. Wenn ich in Keil das Programm 
debuge, sehe ich auch, dass in expandedKeys die Werte genau so drin 
stehen, wie sie sollen. Aber wenn ich nun einen Wert daraus lese, 
bekomme ich die Exception geworfen. Ich hab keine Ahnung warum. Ich 
stehe voll auf dem Schlauch. Hat irgendjemand ne Ahnung was ich hier 
falsch mache?
Gast #3577331
Lesenswert?
• ▲
▼
Marcel B. schrieb:
> void ecbMode(char* key)
> {
>         ...
>   char expandedKeys[240] = { 0 };
>         ...
>   aesEncrypt(..., key, expandedKeys);
>   ...
> }

Könnte es sein, dass char exp... auf dem Stack liegt? Was übergibst du 
dann der Funktion?

Schreib:
static char expandedKeys[240] = { 0 };
Beim zweiten Eintritt musst die die Nullen von Hand ins array schreiben.
OP #3577438
Lesenswert?
• ▲
▼
Ähhmmm okay. Das Problem hat sich erledigt. Ich habe meinen Fehler 
gefunden. Ich nutze in der Funktion expandKey() eine andere Funktion die 
aus Versehen über ein zu kleines Array hinwegschreibt. Dadurch 
überschreibe ich eine andere Variable usw.
Ich danke Euch trotzdem für die Tipps. Gute Nacht!!!

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.