view libpurple/protocols/yahoo/Makefile.mingw @ 32796:5ae7e1f36b43

Fix a possible XMPP remote crash A series of specially crafted file transfer requests can cause clients to reference invalid memory. The user must have accepted one of the file transfer requests. The fix is to correctly cancel and free a SOCKS5 connection attempt so that it does not trigger an attempt to access invalid memory later. This was reported to us by Jos«± Valent«żn Guti«±rrez and this patch is written by Paul Aurich.
author Mark Doliner <mark@kingant.net>
date Mon, 07 May 2012 03:16:31 +0000
parents 77976350b32d
children
line wrap: on
line source

#
# Makefile.mingw
#
# Description: Makefile for win32 (mingw) version of libyahoo
#

PIDGIN_TREE_TOP := ../../..
include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak

TARGET = libymsg
YAHOO_TARGET = libyahoo
YAHOOJP_TARGET = libyahoojp
TYPE = PLUGIN

# Static or Plugin...
ifeq ($(TYPE),STATIC)
  DEFINES += -DSTATIC
  DLL_INSTALL_DIR =	$(PURPLE_INSTALL_DIR)
else
ifeq ($(TYPE),PLUGIN)
  DLL_INSTALL_DIR =	$(PURPLE_INSTALL_PLUGINS_DIR)
endif
endif

##
## INCLUDE PATHS
##
INCLUDE_PATHS +=	-I. \
			-I$(GTK_TOP)/include \
			-I$(GTK_TOP)/include/glib-2.0 \
			-I$(GTK_TOP)/lib/glib-2.0/include \
			-I$(PURPLE_TOP) \
			-I$(PURPLE_TOP)/win32 \
			-I$(PIDGIN_TREE_TOP)

LIB_PATHS +=		-L. \
			-L$(GTK_TOP)/lib \
			-L$(PURPLE_TOP)

##
##  SOURCES, OBJECTS
##
C_SRC =			util.c \
			libymsg.c \
			yahoochat.c \
			yahoo_aliases.c \
			yahoo_doodle.c \
			yahoo_filexfer.c \
			yahoo_friend.c \
			yahoo_packet.c \
			yahoo_picture.c \
			yahoo_profile.c \
			ycht.c

OBJECTS = $(C_SRC:%.c=%.o)

YAHOO_C_SRC = libyahoo.c
YAHOO_OBJECTS = $(YAHOO_C_SRC:%.c=%.o)

YAHOOJP_C_SRC = libyahoojp.c
YAHOOJP_OBJECTS = $(YAHOOJP_C_SRC:%.c=%.o)

##
## LIBRARIES
##
LIBS =			\
			-lglib-2.0 \
			-lws2_32 \
			-lintl \
			-lpurple

include $(PIDGIN_COMMON_RULES)

##
## TARGET DEFINITIONS
##

.PHONY: all install clean

all: $(TARGET).dll $(YAHOO_TARGET).dll $(YAHOOJP_TARGET).dll

install: all $(DLL_INSTALL_DIR)
	cp $(YAHOO_TARGET).dll $(YAHOOJP_TARGET).dll $(DLL_INSTALL_DIR)
	cp $(TARGET).dll $(PURPLE_INSTALL_DIR)

$(OBJECTS): $(PURPLE_CONFIG_H)

$(TARGET).dll.a $(TARGET).dll: $(PURPLE_DLL).a $(OBJECTS)
	$(CC) -shared $(OBJECTS) $(LIB_PATHS) $(LIBS) $(DLL_LD_FLAGS) -Wl,--output-def,$(TARGET).def,--out-implib,$(TARGET).dll.a -o $(TARGET).dll

$(YAHOO_TARGET).dll: $(TARGET).dll.a $(YAHOO_OBJECTS)
	$(CC) -shared $(YAHOO_OBJECTS) $(LIB_PATHS) $(LIBS) -lymsg $(DLL_LD_FLAGS) -o $(YAHOO_TARGET).dll

$(YAHOOJP_TARGET).dll: $(TARGET).dll.a $(YAHOOJP_OBJECTS)
	$(CC) -shared $(YAHOOJP_OBJECTS) $(LIB_PATHS) $(LIBS) -lymsg $(DLL_LD_FLAGS) -o $(YAHOOJP_TARGET).dll

##
## CLEAN RULES
##
clean:
	rm -f $(OBJECTS) $(TARGET).dll $(TARGET).dll.a
	rm -f $(YAHOO_OBJECTS) $(YAHOO_TARGET).dll
	rm -f $(YAHOOJP_OBJECTS) $(YAHOOJP_TARGET).dll

include $(PIDGIN_COMMON_TARGETS)