Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Sauruxum en 8 Noviembre 2010, 20:47 pm



Título: std::cin puede causar un buffer overflow?
Publicado por: Sauruxum en 8 Noviembre 2010, 20:47 pm
Buenas.

Estoy haciendo un programa y ya estoy en las fases finales de escritura del codigo, pero me encuentro en una posicion que me deja con una duda.

A cierto punto hago una cosa del tipo:

Código:
char *f;

...
...

cin>>f;

Mi pregunta es: esto puede en algun modo causar un BOF?
Estuve viendo algunos ejemplos de BOFs pero en especifico no encuentro este, aun asi me queda la duda ya que esto en ningun modo controla el tamaño de la cadena... o no se, quiza me equivoco en el concepto del BOF.

Saludos


Título: Re: std::cin puede causar un buffer overflow?
Publicado por: Littlehorse en 8 Noviembre 2010, 22:23 pm
Si obviamente, si la entrada de datos excede el tamaño del buffer, un BOF ocurriría. De por si, ese operador no chequea ningún tipo de limite.

Podes usar getline (http://www.cplusplus.com/reference/iostream/istream/getline/) o utilizar cin con width ya sea usando ::width o setw:

Código
  1.  cin.width (10);
  2.  cin >> str;