summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--common/os_calls.c7
-rw-r--r--common/parse.h2
-rw-r--r--sesman/Makefile4
-rw-r--r--sesman/sesman.c3
-rw-r--r--vnc/vnc.c9
-rw-r--r--vnc/vnc.h1
-rw-r--r--xrdp/xrdp.h9
-rw-r--r--xrdp/xrdp_interface.c6
-rw-r--r--xrdp/xrdp_list.c49
-rw-r--r--xrdp/xrdp_login_wnd.c1
-rw-r--r--xrdp/xrdp_types.h3
11 files changed, 74 insertions, 20 deletions
diff --git a/common/os_calls.c b/common/os_calls.c
index 095ff4fd..d81b3cd4 100644
--- a/common/os_calls.c
+++ b/common/os_calls.c
@@ -948,13 +948,20 @@ void* g_get_proc_address(int lib, char* name)
/*****************************************************************************/
int g_system(char* aexec)
{
+#ifdef _WIN32
+ return 0;
+#else
return system(aexec);
+#endif
}
/*****************************************************************************/
void g_signal(int sig_num, void (*func)(int))
{
+#ifdef _WIN32
+#else
signal(sig_num, func);
+#endif
}
/*****************************************************************************/
diff --git a/common/parse.h b/common/parse.h
index cbcbc37b..11fd92bc 100644
--- a/common/parse.h
+++ b/common/parse.h
@@ -76,7 +76,9 @@ struct stream
#define free_stream(s) \
{ \
if (s != 0) \
+ { \
g_free(s->data); \
+ } \
g_free(s); \
} \
diff --git a/sesman/Makefile b/sesman/Makefile
index fe964316..9f6969e9 100644
--- a/sesman/Makefile
+++ b/sesman/Makefile
@@ -3,8 +3,8 @@ SESMANOBJ = sesman.o ../common/os_calls.o ../common/d3des.o
CFLAGS = -Wall -O2 -I../common
LDFLAGS = -L /usr/gnu/lib
-LIBS = -lpam_userpass -lcrypto -lpthread
-PAMLIB = /lib/libpam.so.0
+LIBS = -lpam_userpass -lcrypto -lpthread -lpam
+PAMLIB =
CC = gcc
all: sesman
diff --git a/sesman/sesman.c b/sesman/sesman.c
index fbc6c025..503f112d 100644
--- a/sesman/sesman.c
+++ b/sesman/sesman.c
@@ -307,7 +307,8 @@ int start_session(int width, int height, int bpp, char* username,
else if (xpid == 0) // child
{
execlp("Xvnc", "Xvnc", screen, "-geometry", geometry,
- "-depth", depth, "-bs", "-rfbauth", passwd_file, NULL);
+ "-depth", depth, "-bs", "-rfbauth", passwd_file,
+ NULL);
// should not get here
g_printf("error\n");
_exit(0);
diff --git a/vnc/vnc.c b/vnc/vnc.c
index 63dbfdb8..caaed648 100644
--- a/vnc/vnc.c
+++ b/vnc/vnc.c
@@ -452,6 +452,15 @@ int lib_framebuffer_update(struct vnc* v)
}
}
}
+ /* keep these in 32x32, vnc cursor can be alot bigger */
+ if (x > 31)
+ {
+ x = 31;
+ }
+ if (y > 31)
+ {
+ y = 31;
+ }
error = v->server_set_cursor(v, x, y, cursor_data, cursor_mask);
}
}
diff --git a/vnc/vnc.h b/vnc/vnc.h
index 9462ec61..c45ee7be 100644
--- a/vnc/vnc.h
+++ b/vnc/vnc.h
@@ -49,6 +49,7 @@ struct vnc
int (*server_set_cursor)(struct vnc* v, int x, int y, char* data, char* mask);
int (*server_palette)(struct vnc* v, int* palette);
int (*server_error_popup)(struct vnc* v, char* error, char* caption);
+ int (*server_is_term)(struct vnc* v);
/* common */
long handle; /* pointer to self as int */
long wm;
diff --git a/xrdp/xrdp.h b/xrdp/xrdp.h
index c484e01f..0c2a4a4a 100644
--- a/xrdp/xrdp.h
+++ b/xrdp/xrdp.h
@@ -243,12 +243,12 @@ int xrdp_painter_draw_text(struct xrdp_painter* self,
/* xrdp_list.c */
struct xrdp_list* xrdp_list_create(void);
void xrdp_list_delete(struct xrdp_list* self);
-void xrdp_list_add_item(struct xrdp_list* self, int item);
-int xrdp_list_get_item(struct xrdp_list* self, int index);
+void xrdp_list_add_item(struct xrdp_list* self, long item);
+long xrdp_list_get_item(struct xrdp_list* self, int index);
void xrdp_list_clear(struct xrdp_list* self);
-int xrdp_list_index_of(struct xrdp_list* self, int item);
+int xrdp_list_index_of(struct xrdp_list* self, long item);
void xrdp_list_remove_item(struct xrdp_list* self, int index);
-void xrdp_list_insert_item(struct xrdp_list* self, int index, int item);
+void xrdp_list_insert_item(struct xrdp_list* self, int index, long item);
/* xrdp_font.c */
struct xrdp_font* xrdp_font_create(struct xrdp_wm* wm);
@@ -293,4 +293,5 @@ int server_set_pointer(struct xrdp_mod* mod, int x, int y,
char* data, char* mask);
int server_palette(struct xrdp_mod* mod, int* palette);
int server_error_popup(struct xrdp_mod* mod, char* error, char* caption);
+int server_is_term(struct xrdp_mod* mod);
#endif
diff --git a/xrdp/xrdp_interface.c b/xrdp/xrdp_interface.c
index 388e017e..5ae532a3 100644
--- a/xrdp/xrdp_interface.c
+++ b/xrdp/xrdp_interface.c
@@ -344,4 +344,10 @@ int server_error_popup(struct xrdp_mod* mod, char* error, char* caption)
return 0;
}
+/*****************************************************************************/
+int server_is_term(struct xrdp_mod* mod)
+{
+ return g_is_term();
+}
+
#endif /* XRDP_LIB */
diff --git a/xrdp/xrdp_list.c b/xrdp/xrdp_list.c
index acde95d6..50f307cc 100644
--- a/xrdp/xrdp_list.c
+++ b/xrdp/xrdp_list.c
@@ -34,7 +34,7 @@ struct xrdp_list* xrdp_list_create(void)
self = (struct xrdp_list*)g_malloc1(sizeof(struct xrdp_list), 1);
self->grow_by = 10;
self->alloc_size = 10;
- self->items = (int*)g_malloc1(sizeof(int) * 10, 1);
+ self->items = (long*)g_malloc1(sizeof(long) * 10, 1);
return self;
}
@@ -44,26 +44,33 @@ void xrdp_list_delete(struct xrdp_list* self)
int i;
if (self == 0)
+ {
return;
+ }
if (self->auto_free)
+ {
for (i = 0; i < self->count; i++)
+ {
g_free((void*)self->items[i]);
+ self->items[i] = 0;
+ }
+ }
g_free1(self->items);
g_free1(self);
}
/*****************************************************************************/
-void xrdp_list_add_item(struct xrdp_list* self, int item)
+void xrdp_list_add_item(struct xrdp_list* self, long item)
{
- int* p;
+ long* p;
int i;
if (self->count >= self->alloc_size)
{
i = self->alloc_size;
self->alloc_size += self->grow_by;
- p = (int*)g_malloc1(sizeof(int) * self->alloc_size, 1);
- g_memcpy(p, self->items, sizeof(int) * i);
+ p = (long*)g_malloc1(sizeof(long) * self->alloc_size, 1);
+ g_memcpy(p, self->items, sizeof(long) * i);
g_free1(self->items);
self->items = p;
}
@@ -72,10 +79,12 @@ void xrdp_list_add_item(struct xrdp_list* self, int item)
}
/*****************************************************************************/
-int xrdp_list_get_item(struct xrdp_list* self, int index)
+long xrdp_list_get_item(struct xrdp_list* self, int index)
{
if (index < 0 || index >= self->count)
+ {
return 0;
+ }
return self->items[index];
}
@@ -85,23 +94,32 @@ void xrdp_list_clear(struct xrdp_list* self)
int i;
if (self->auto_free)
+ {
for (i = 0; i < self->count; i++)
+ {
g_free((void*)self->items[i]);
+ self->items[i] = 0;
+ }
+ }
g_free1(self->items);
self->count = 0;
self->grow_by = 10;
self->alloc_size = 10;
- self->items = (int*)g_malloc1(sizeof(int) * 10, 1);
+ self->items = (long*)g_malloc1(sizeof(long) * 10, 1);
}
/*****************************************************************************/
-int xrdp_list_index_of(struct xrdp_list* self, int item)
+int xrdp_list_index_of(struct xrdp_list* self, long item)
{
int i;
for (i = 0; i < self->count; i++)
+ {
if (self->items[i] == item)
+ {
return i;
+ }
+ }
return -1;
}
@@ -113,17 +131,22 @@ void xrdp_list_remove_item(struct xrdp_list* self, int index)
if (index >= 0 && index < self->count)
{
if (self->auto_free)
+ {
g_free((void*)self->items[index]);
+ self->items[index] = 0;
+ }
for (i = index; i < (self->count - 1); i++)
+ {
self->items[i] = self->items[i + 1];
+ }
self->count--;
}
}
/*****************************************************************************/
-void xrdp_list_insert_item(struct xrdp_list* self, int index, int item)
+void xrdp_list_insert_item(struct xrdp_list* self, int index, long item)
{
- int* p;
+ long* p;
int i;
if (index == self->count)
@@ -138,13 +161,15 @@ void xrdp_list_insert_item(struct xrdp_list* self, int index, int item)
{
i = self->alloc_size;
self->alloc_size += self->grow_by;
- p = (int*)g_malloc1(sizeof(int) * self->alloc_size, 1);
- g_memcpy(p, self->items, sizeof(int) * i);
+ p = (long*)g_malloc1(sizeof(long) * self->alloc_size, 1);
+ g_memcpy(p, self->items, sizeof(long) * i);
g_free1(self->items);
self->items = p;
}
for (i = (self->count - 2); i >= index; i--)
+ {
self->items[i + 1] = self->items[i];
+ }
self->items[index] = item;
}
}
diff --git a/xrdp/xrdp_login_wnd.c b/xrdp/xrdp_login_wnd.c
index aecc77fe..b449ab85 100644
--- a/xrdp/xrdp_login_wnd.c
+++ b/xrdp/xrdp_login_wnd.c
@@ -110,6 +110,7 @@ int xrdp_wm_setup_mod(struct xrdp_wm* self,
self->mod->server_set_pointer = server_set_pointer;
self->mod->server_palette = server_palette;
self->mod->server_error_popup= server_error_popup;
+ self->mod->server_is_term = server_is_term;
}
}
}
diff --git a/xrdp/xrdp_types.h b/xrdp/xrdp_types.h
index 84764abc..b89560a0 100644
--- a/xrdp/xrdp_types.h
+++ b/xrdp/xrdp_types.h
@@ -43,6 +43,7 @@ struct xrdp_mod
int (*server_set_pointer)(struct xrdp_mod* v, int x, int y, char* data, char* mask);
int (*server_palette)(struct xrdp_mod* v, int* palette);
int (*server_error_popup)(struct xrdp_mod* v, char* error, char* caption);
+ int (*server_is_term)(struct xrdp_mod* v);
/* common */
long handle; /* pointer to self as int */
long wm; /* struct xrdp_wm* */
@@ -76,7 +77,7 @@ struct xrdp_bmp_header
/* list */
struct xrdp_list
{
- int* items;
+ long* items;
int count;
int alloc_size;
int grow_by;