Tengo una función que devuelve una cadena:C: Volviendo cadena a partir de la función
const *char getMyPassword()
{
return "mysecretpassword";
}
Bueno, funcionó perfectamente, pero he descubierto que si iba a funcionar "cadenas" en sistemas Unix que aparece en el lista ... no es bueno
¿Cuál es la forma más fácil de reemplazarlo? La función se encuentra en una biblioteca y quiero mantenerla flexible. Ahora comencé mallocing dentro de la función y la cadena en cadenas desapareció. Sin embargo, ¿cuándo lo liberaría de nuevo?
char * getMyPassword()
{
unsigned char arr[] = { 'p', 'a', 's', 's', 'w', 'o', 'r' , 'd', '\0' };
char *return_arr = malloc(sizeof(arr));
strcpy(return_arr, arr);
return return_arr;
}
Si tuviera que malloc antes y pasar un puntero, entonces, ¿cómo iba a saber el tamaño antes de que el tamaño de las contraseñas sólo se conoce dentro de la función?
Como un plan B que podía pasar una enorme variedad, pero eso no parece muy elegante. ¿Cómo debería abordar esto?
EDITAR: He añadido el strcpy (return_arr, arr). De hecho, lo tenía en el código original, pero lo olvidé aquí.
Ponlo allí hacia atrás, luego usa '' 'strrev()' ''. O bien, rot-13 dos veces. –
Si vas a usar contraseñas, te recomiendo usar contraseñas hash en lugar de la cadena literal. Eso definitivamente reducirá la cantidad de información que alguien puede obtener al ejecutar 'cadenas' en el programa. Puede personalizar una función hash para que la gente no pueda (o al menos sea mucho más difícil) determinar cuál es realmente el valor. – dbeer
¿Con qué propósito se debe usar la contraseña?¿Iniciar sesión en algún lugar o tal? –