elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Seguimos necesitando fgets por seguridad?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Seguimos necesitando fgets por seguridad?  (Leído 2,299 veces)
skan


Desconectado Desconectado

Mensajes: 1.360


Ver Perfil
Seguimos necesitando fgets por seguridad?
« en: 14 Agosto 2013, 01:33 am »

Hola

Hace un tiempo leí  Effective C++, donde se aconseja el uso de fgets() (y strncat) en vez de get() porque se puede especificar el número de caracteres a leer y así no se produce un desbordamiento de memoria.

Varios libros nuevos, como el de Prata o Professional C++ no hablan de fgets.
¿Se debe a que ya no hace falta?
Lo digo porque comandos como cin.get()  y cin.getline() pueden especificar el tamaño a leer.
¿Qué diferencia hay entre cin.get() y fgets()?


En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Seguimos necesitando fgets por seguridad?
« Respuesta #1 en: 14 Agosto 2013, 01:50 am »

En C++ ya no hace falta, menos cuando existe la clase string, cuyo tamaño puede modificarse sobre la marcha:

Código
  1. string Texto;
  2. getline(cin,Texto); // Puedes leer infinitos caracteres


En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
skan


Desconectado Desconectado

Mensajes: 1.360


Ver Perfil
Re: Seguimos necesitando fgets por seguridad?
« Respuesta #2 en: 14 Agosto 2013, 02:57 am »

En C++ ya no hace falta, menos cuando existe la clase string, cuyo tamaño puede modificarse sobre la marcha:

Código
  1. string Texto;
  2. getline(cin,Texto); // Puedes leer infinitos caracteres

¿Y qué pasa si cin no cabe en memoria?
En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Seguimos necesitando fgets por seguridad?
« Respuesta #3 en: 14 Agosto 2013, 08:48 am »

string es una clase que se ajusta solo, de modo que si metes 100 caracteres se reservaran 100 caracteres.

Dado que cada caracter ocupa 1 byte, es muy díficil que tengas problemas de memoria (cuantos caracteres vas a meter? 1000000000?). Pero si así fuera lanzaría una excepcion (bad_alloc) que podrías manejar con un try y catch (o no la manejas, y entonces el programa finalizaría mostrando un mensaje de error).
« Última modificación: 14 Agosto 2013, 08:54 am por amchacon » En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
skan


Desconectado Desconectado

Mensajes: 1.360


Ver Perfil
Re: Seguimos necesitando fgets por seguridad?
« Respuesta #4 en: 14 Agosto 2013, 14:21 pm »

OK, gracias.  Lo que no entiendo es porque algunas cosas devuelven punteros (como los nombres de los array) y otras no (como los string)
En línea

0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: Seguimos necesitando fgets por seguridad?
« Respuesta #5 en: 14 Agosto 2013, 18:05 pm »

OK, gracias.  Lo que no entiendo es porque algunas cosas devuelven punteros (como los nombres de los array) y otras no (como los string)


Por que string es una clase built-in de la STL, que internamente también maneja un array de caracteres. Puedes acceder a ese array por medio de la función c_str() de la clase string.

Saludos.
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Seguimos con el problema de la grabadora
Software
zabatu 1 2,214 Último mensaje 8 Enero 2006, 20:15 pm
por el-brujo
Seguimos cOn problemas???
Sugerencias y dudas sobre el Foro
mousehack 5 2,708 Último mensaje 22 Mayo 2006, 13:22 pm
por -BeTa-
Aun seguimos en navidad ¿? « 1 2 »
Sugerencias y dudas sobre el Foro
Hadess_inf 13 4,981 Último mensaje 2 Febrero 2008, 17:27 pm
por Carloswaldo
Windows 10 ha mejorado en seguridad pero sigue necesitando antivirus
Noticias
wolfbcn 1 1,124 Último mensaje 9 Diciembre 2015, 22:01 pm
por Orubatosu
Nuevo y necesitando ayuda.
Hacking
isaacdvid 3 2,549 Último mensaje 16 Febrero 2017, 00:40 am
por RaloGomez
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines