summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjsorg71 <jsorg71>2009-08-24 18:09:19 +0000
committerjsorg71 <jsorg71>2009-08-24 18:09:19 +0000
commitacd9f3d82de55e9b57428c29abab397355a65e96 (patch)
tree48523205f65deb89b2a294b1b502671a753c9e7d
parent9fc138380ba7469c74ceec79b8de9d7829e0c53b (diff)
downloadxrdp-proprietary-acd9f3d82de55e9b57428c29abab397355a65e96.tar.gz
xrdp-proprietary-acd9f3d82de55e9b57428c29abab397355a65e96.zip
fix a crash when freeing struct SCP_SESSION
-rw-r--r--sesman/libscp/libscp_session.c70
1 files changed, 11 insertions, 59 deletions
diff --git a/sesman/libscp/libscp_session.c b/sesman/libscp/libscp_session.c
index 35a3a2ad..baebb293 100644
--- a/sesman/libscp/libscp_session.c
+++ b/sesman/libscp/libscp_session.c
@@ -33,26 +33,18 @@
extern struct log_config* s_log;
+/*******************************************************************/
struct SCP_SESSION*
scp_session_create()
{
struct SCP_SESSION* s;
- s = g_malloc(sizeof(struct SCP_SESSION), 0);
-
+ s = (struct SCP_SESSION*)g_malloc(sizeof(struct SCP_SESSION), 1);
if (0 == s)
{
log_message(s_log, LOG_LEVEL_WARNING, "[session:%d] session create: malloc error", __LINE__);
return 0;
}
-
- s->username = 0;
- s->password = 0;
- s->hostname = 0;
- s->errstr = 0;
- s->mng = 0;
- s->locale[0]='\0';
-
return s;
}
@@ -70,7 +62,7 @@ scp_session_set_type(struct SCP_SESSION* s, tui8 type)
break;
case SCP_SESSION_TYPE_MANAGE:
s->type = SCP_SESSION_TYPE_MANAGE;
- s->mng = g_malloc(sizeof(struct SCP_MNG_DATA),1);
+ s->mng = (struct SCP_MNG_DATA*)g_malloc(sizeof(struct SCP_MNG_DATA), 1);
if (NULL == s->mng)
{
log_message(s_log, LOG_LEVEL_ERROR, "[session:%d] set_type: internal error", __LINE__);
@@ -382,53 +374,13 @@ scp_session_set_addr(struct SCP_SESSION* s, int type, void* addr)
void
scp_session_destroy(struct SCP_SESSION* s)
{
- if (s->username)
- {
- g_free(s->username);
- s->username = 0;
- }
-
- if (s->password)
- {
- g_free(s->password);
- s->password = 0;
- }
-
- if (s->hostname)
- {
- g_free(s->hostname);
- s->hostname = 0;
- }
-
- if (s->domain)
- {
- g_free(s->domain);
- s->domain = 0;
- }
-
- if (s->program)
- {
- g_free(s->program);
- s->program = 0;
- }
-
- if (s->directory)
- {
- g_free(s->directory);
- s->directory = 0;
- }
-
- if (s->errstr)
- {
- g_free(s->errstr);
- s->errstr = 0;
- }
-
- if (s->mng)
- {
- g_free(s->mng);
- s->mng = 0;
- }
-
+ g_free(s->username);
+ g_free(s->password);
+ g_free(s->hostname);
+ g_free(s->domain);
+ g_free(s->program);
+ g_free(s->directory);
+ g_free(s->errstr);
+ g_free(s->mng);
g_free(s);
}