Nein, wenn "aufgabe1" länger ist als der Puffer, ist das Ergebnis nicht undefiniert, sondern die Strings sind ungleich (ist nur ein Vergleich, kein strcpy!). Wenn das Stringende 0 fehlt muss natürlich strncmp genommen werden.

Wenn sich der String nicht ändert, kannst du ihn im Flash lassen und musst nicht SRAM und Flash belegen:
Code:
#include <avr/pgmspace.h>

   if (0 == strncmp_P (uip_appdata, "aufgabe1", uip_len))
   {
       // mach was bei Gleichheit der ersten uip_len Zeichen
   }

   if (0 == strcmp_P (uip_appdata, "aufgabe1"))
   {
       // mach was bei Gleichheit
   }