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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Como devolver puntero con cadena vacia
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como devolver puntero con cadena vacia  (Leído 3,530 veces)
Destro-

Desconectado Desconectado

Mensajes: 66


www.onlyarg.com.ar


Ver Perfil WWW
Como devolver puntero con cadena vacia
« en: 17 Marzo 2014, 20:48 pm »

Buenas.
Me tira APPCRASH muy random cuando uso esto

Código:
// otra funcion...
char copy[64];
strncpy(copy, getClipboard(), 63); // Crash
// code...

char *getClipboard()
{
char *strData;

if(OpenClipboard(NULL))
{
HANDLE hClipboardData = GetClipboardData(CF_TEXT);
if(hClipboardData != nullptr)
{
char *pchData = static_cast<char*>(GlobalLock(hClipboardData));
if(pchData != nullptr)
strData = pchData;
else strData = "\0";

GlobalUnlock(hClipboardData);
}
else strData = "\0";

CloseClipboard();
}
return strData;
}
Creo que es porque no estoy devolviendo correctamente el puntero de una cadena vaciá,como se hace ?,hay algún otro error o algo para mejorar ?.


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Como devolver puntero con cadena vacia
« Respuesta #1 en: 17 Marzo 2014, 20:53 pm »

Fíjate en qué parte falla. Ve poniendo pausas, por ejemplo. A mi me parece que va bien (no lo probé).


En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Como devolver puntero con cadena vacia
« Respuesta #2 en: 17 Marzo 2014, 21:58 pm »

Siempre inicializa las variables, si OpenClipboard falla strData tiene un valor indefinido.

Código
  1. char *strData = "";

PD. La cadena vacia como la hiciste es correcta tambien.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Destro-

Desconectado Desconectado

Mensajes: 66


www.onlyarg.com.ar


Ver Perfil WWW
Re: Como devolver puntero con cadena vacia
« Respuesta #3 en: 17 Marzo 2014, 22:10 pm »

ok

entonces que puede estar causando el crash (Infracción de acceso al leer la ubicación 0x00000000) ?,es muy random y no logro saber en que situación se genera.
el trace solo me marca strncpy.

@EDIT
creo que ya esta solucionado,al inicializar la variable parece no crashear mas.
voy a seguir probando por las dudas
« Última modificación: 17 Marzo 2014, 22:23 pm por Destro- » En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Como devolver puntero con cadena vacia
« Respuesta #4 en: 17 Marzo 2014, 22:22 pm »

Código
  1. strData = "\0";

Estas apuntando a una cadena de 2 nulos. La sintaxis correcta sería:
Código
  1. strData = "";

Pero vamos, eso es irrelevante para los crashs.

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
Destro-

Desconectado Desconectado

Mensajes: 66


www.onlyarg.com.ar


Ver Perfil WWW
Re: Como devolver puntero con cadena vacia
« Respuesta #5 en: 17 Marzo 2014, 22:25 pm »

Si,parece que era eso :D.
Por ahora parece estar funcionado con la variable inicializada.

Gracias.
« Última modificación: 17 Marzo 2014, 22:30 pm por Destro- » En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Como devolver puntero con cadena vacia
« Respuesta #6 en: 17 Marzo 2014, 22:30 pm »

Si,parece que era eso :D.
Por ahora parece funcionado con la variable inicializada.

Gracias.

De nadas.

PD. Por definicion una cadena esta terminada en 0 asi que si su primer byte es 0 ahi termina.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Cadena estatica al devolver puntero de cadena.
Programación C/C++
alem29 2 3,293 Último mensaje 5 Febrero 2012, 23:38 pm
por eleon
Si variable PHP vacia(no empty(),is_null,isset) que no tome 0 como vacia en POST
PHP
Graphixx 9 22,362 Último mensaje 12 Mayo 2012, 18:58 pm
por it3r
Devolver puntero a cadena en función
ASM
silver2050 2 2,842 Último mensaje 22 Mayo 2013, 00:31 am
por silver2050
Devolver una cadena pasada como argumento a una funcion
Programación C/C++
eduu15 4 3,162 Último mensaje 9 Abril 2018, 03:18 am
por MAFUS
Como leer una cadena de caracteres vacia
Programación C/C++
josueroddy 1 2,411 Último mensaje 23 Octubre 2021, 00:41 am
por K-YreX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines