亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dso_dlfcn.c

?? openssl包含TLS
?? C
字號:
/* dso_dlfcn.c *//* Written by Geoff Thorpe (geoff@geoffthorpe.net) for the OpenSSL * project 2000. *//* ==================================================================== * Copyright (c) 2000 The OpenSSL Project.  All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer.  * * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in *    the documentation and/or other materials provided with the *    distribution. * * 3. All advertising materials mentioning features or use of this *    software must display the following acknowledgment: *    "This product includes software developed by the OpenSSL Project *    for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" * * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to *    endorse or promote products derived from this software without *    prior written permission. For written permission, please contact *    licensing@OpenSSL.org. * * 5. Products derived from this software may not be called "OpenSSL" *    nor may "OpenSSL" appear in their names without prior written *    permission of the OpenSSL Project. * * 6. Redistributions of any form whatsoever must retain the following *    acknowledgment: *    "This product includes software developed by the OpenSSL Project *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" * * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. * ==================================================================== * * This product includes cryptographic software written by Eric Young * (eay@cryptsoft.com).  This product includes software written by Tim * Hudson (tjh@cryptsoft.com). * */#ifdef __linux#define _GNU_SOURCE#endif#include <stdio.h>#include "cryptlib.h"#include <openssl/dso.h>#ifndef DSO_DLFCNDSO_METHOD *DSO_METHOD_dlfcn(void)	{	return NULL;	}#else#ifdef HAVE_DLFCN_H#include <dlfcn.h>#endif/* Part of the hack in "dlfcn_load" ... */#define DSO_MAX_TRANSLATED_SIZE 256static int dlfcn_load(DSO *dso);static int dlfcn_unload(DSO *dso);static void *dlfcn_bind_var(DSO *dso, const char *symname);static DSO_FUNC_TYPE dlfcn_bind_func(DSO *dso, const char *symname);#if 0static int dlfcn_unbind(DSO *dso, char *symname, void *symptr);static int dlfcn_init(DSO *dso);static int dlfcn_finish(DSO *dso);static long dlfcn_ctrl(DSO *dso, int cmd, long larg, void *parg);#endifstatic char *dlfcn_name_converter(DSO *dso, const char *filename);static DSO_METHOD dso_meth_dlfcn = {	"OpenSSL 'dlfcn' shared library method",	dlfcn_load,	dlfcn_unload,	dlfcn_bind_var,	dlfcn_bind_func,/* For now, "unbind" doesn't exist */#if 0	NULL, /* unbind_var */	NULL, /* unbind_func */#endif	NULL, /* ctrl */	dlfcn_name_converter,	NULL, /* init */	NULL  /* finish */	};DSO_METHOD *DSO_METHOD_dlfcn(void)	{	return(&dso_meth_dlfcn);	}/* Prior to using the dlopen() function, we should decide on the flag * we send. There's a few different ways of doing this and it's a * messy venn-diagram to match up which platforms support what. So * as we don't have autoconf yet, I'm implementing a hack that could * be hacked further relatively easily to deal with cases as we find * them. Initially this is to cope with OpenBSD. */#if defined(__OpenBSD__) || defined(__NetBSD__)#	ifdef DL_LAZY#		define DLOPEN_FLAG DL_LAZY#	else#		ifdef RTLD_NOW#			define DLOPEN_FLAG RTLD_NOW#		else#			define DLOPEN_FLAG 0#		endif#	endif#else#	ifdef OPENSSL_SYS_SUNOS#		define DLOPEN_FLAG 1#	else#		define DLOPEN_FLAG RTLD_NOW /* Hope this works everywhere else */#	endif#endif/* For this DSO_METHOD, our meth_data STACK will contain; * (i) the handle (void*) returned from dlopen(). */static int dlfcn_load(DSO *dso)	{	void *ptr = NULL;	/* See applicable comments in dso_dl.c */	char *filename = DSO_convert_filename(dso, NULL);	if(filename == NULL)		{		DSOerr(DSO_F_DLFCN_LOAD,DSO_R_NO_FILENAME);		goto err;		}	ptr = dlopen(filename, DLOPEN_FLAG);	if(ptr == NULL)		{		DSOerr(DSO_F_DLFCN_LOAD,DSO_R_LOAD_FAILED);		ERR_add_error_data(4, "filename(", filename, "): ", dlerror());		goto err;		}	if(!sk_push(dso->meth_data, (char *)ptr))		{		DSOerr(DSO_F_DLFCN_LOAD,DSO_R_STACK_ERROR);		goto err;		}	/* Success */	dso->loaded_filename = filename;	return(1);err:	/* Cleanup! */	if(filename != NULL)		OPENSSL_free(filename);	if(ptr != NULL)		dlclose(ptr);	return(0);}static int dlfcn_unload(DSO *dso)	{	void *ptr;	if(dso == NULL)		{		DSOerr(DSO_F_DLFCN_UNLOAD,ERR_R_PASSED_NULL_PARAMETER);		return(0);		}	if(sk_num(dso->meth_data) < 1)		return(1);	ptr = (void *)sk_pop(dso->meth_data);	if(ptr == NULL)		{		DSOerr(DSO_F_DLFCN_UNLOAD,DSO_R_NULL_HANDLE);		/* Should push the value back onto the stack in		 * case of a retry. */		sk_push(dso->meth_data, (char *)ptr);		return(0);		}	/* For now I'm not aware of any errors associated with dlclose() */	dlclose(ptr);	return(1);	}static void *dlfcn_bind_var(DSO *dso, const char *symname)	{	void *ptr, *sym;	if((dso == NULL) || (symname == NULL))		{		DSOerr(DSO_F_DLFCN_BIND_VAR,ERR_R_PASSED_NULL_PARAMETER);		return(NULL);		}	if(sk_num(dso->meth_data) < 1)		{		DSOerr(DSO_F_DLFCN_BIND_VAR,DSO_R_STACK_ERROR);		return(NULL);		}	ptr = (void *)sk_value(dso->meth_data, sk_num(dso->meth_data) - 1);	if(ptr == NULL)		{		DSOerr(DSO_F_DLFCN_BIND_VAR,DSO_R_NULL_HANDLE);		return(NULL);		}	sym = dlsym(ptr, symname);	if(sym == NULL)		{		DSOerr(DSO_F_DLFCN_BIND_VAR,DSO_R_SYM_FAILURE);		ERR_add_error_data(4, "symname(", symname, "): ", dlerror());		return(NULL);		}	return(sym);	}static DSO_FUNC_TYPE dlfcn_bind_func(DSO *dso, const char *symname)	{	void *ptr;	DSO_FUNC_TYPE sym, *tsym = &sym;	if((dso == NULL) || (symname == NULL))		{		DSOerr(DSO_F_DLFCN_BIND_FUNC,ERR_R_PASSED_NULL_PARAMETER);		return(NULL);		}	if(sk_num(dso->meth_data) < 1)		{		DSOerr(DSO_F_DLFCN_BIND_FUNC,DSO_R_STACK_ERROR);		return(NULL);		}	ptr = (void *)sk_value(dso->meth_data, sk_num(dso->meth_data) - 1);	if(ptr == NULL)		{		DSOerr(DSO_F_DLFCN_BIND_FUNC,DSO_R_NULL_HANDLE);		return(NULL);		}	*(void**)(tsym) = dlsym(ptr, symname);	if(sym == NULL)		{		DSOerr(DSO_F_DLFCN_BIND_FUNC,DSO_R_SYM_FAILURE);		ERR_add_error_data(4, "symname(", symname, "): ", dlerror());		return(NULL);		}	return(sym);	}static char *dlfcn_name_converter(DSO *dso, const char *filename)	{	char *translated;	int len, rsize, transform;	len = strlen(filename);	rsize = len + 1;	transform = (strstr(filename, "/") == NULL);	if(transform)		{		/* We will convert this to "%s.so" or "lib%s.so" */		rsize += 3;	/* The length of ".so" */		if ((DSO_flags(dso) & DSO_FLAG_NAME_TRANSLATION_EXT_ONLY) == 0)			rsize += 3; /* The length of "lib" */		}	translated = OPENSSL_malloc(rsize);	if(translated == NULL)		{		DSOerr(DSO_F_DLFCN_NAME_CONVERTER,				DSO_R_NAME_TRANSLATION_FAILED);		return(NULL);		}	if(transform)		{		if ((DSO_flags(dso) & DSO_FLAG_NAME_TRANSLATION_EXT_ONLY) == 0)			sprintf(translated, "lib%s.so", filename);		else			sprintf(translated, "%s.so", filename);		}	else		sprintf(translated, "%s", filename);	return(translated);	}#ifdef OPENSSL_FIPSstatic void dlfcn_ref_point(){}int DSO_pathbyaddr(void *addr,char *path,int sz)	{	Dl_info dli;	int len;	if (addr == NULL)		{		union { void(*f)(void); void *p; } t = { dlfcn_ref_point };		addr = t.p;		}	if (dladdr(addr,&dli))		{		len = (int)strlen(dli.dli_fname);		if (sz <= 0) return len+1;		if (len >= sz) len=sz-1;		memcpy(path,dli.dli_fname,len);		path[len++]=0;		return len;		}	ERR_add_error_data(4, "dlfcn_pathbyaddr(): ", dlerror());	return -1;	}#endif#endif /* DSO_DLFCN */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产综合久久精品性色| 麻豆成人在线观看| 久久影院电视剧免费观看| 5858s免费视频成人| 777奇米四色成人影色区| 欧美日韩免费电影| 欧美日韩成人综合| 日韩欧美电影在线| 久久亚洲影视婷婷| 国产三级欧美三级| 国产精品久久久久aaaa| 亚洲欧美日韩在线| 亚洲成人综合在线| 久久精品国产一区二区三| 国产一区二区三区在线观看精品 | 日韩欧美激情四射| 久久亚洲精精品中文字幕早川悠里 | 中文字幕欧美国产| 欧美伦理电影网| 91精品国产综合久久福利| 精品国产91洋老外米糕| 久久日一线二线三线suv| 国产精品女主播av| 亚洲成人福利片| 国内精品久久久久影院色| 成人午夜免费电影| 欧美肥妇毛茸茸| 久久综合九色综合97婷婷| 国产精品久久久久久久久搜平片 | 91毛片在线观看| 在线观看三级视频欧美| 欧美一区二区大片| 日本一区二区三区久久久久久久久不| 亚洲人成在线播放网站岛国| 成人午夜精品一区二区三区| 色综合中文字幕| 色偷偷久久人人79超碰人人澡| 欧美午夜在线一二页| 精品美女在线播放| 亚洲精品视频自拍| 国产一区二区伦理| 欧美性极品少妇| 国产人伦精品一区二区| 亚洲国产欧美在线| 成人免费毛片a| 欧美一区二区三区小说| 欧美一区二区三区不卡| 国产校园另类小说区| 亚洲第一电影网| 99久久亚洲一区二区三区青草| 欧美电影免费观看高清完整版在| 亚洲精品成人少妇| 成人中文字幕合集| 日韩欧美一区二区久久婷婷| 日韩理论片网站| 懂色av一区二区三区免费看| 欧美猛男超大videosgay| 日本一区二区视频在线观看| 日本不卡的三区四区五区| 99久久久国产精品| 精品三级在线观看| 亚洲国产裸拍裸体视频在线观看乱了| 国产成人免费在线视频| 日韩一区二区免费在线观看| 最新中文字幕一区二区三区| 五月婷婷激情综合网| 欧美色网一区二区| 一区二区三区中文在线| 91小视频免费观看| 亚洲人被黑人高潮完整版| 顶级嫩模精品视频在线看| 久久久99精品免费观看不卡| 狠狠色狠狠色综合| www欧美成人18+| 久草热8精品视频在线观看| 日韩精品一区二| 国产麻豆精品在线观看| 久久中文娱乐网| 国产91精品露脸国语对白| 亚洲色图欧美偷拍| 不卡av电影在线播放| 国产精品全国免费观看高清| 成人小视频在线| 日韩一区在线播放| 一道本成人在线| 亚洲国产精品久久不卡毛片| 欧美日本在线播放| 免费一级片91| 国产片一区二区三区| av网站免费线看精品| 亚洲图片激情小说| 欧美三级午夜理伦三级中视频| 亚洲一区中文在线| 日韩欧美专区在线| 处破女av一区二区| 亚洲另类在线视频| 在线播放国产精品二区一二区四区| 秋霞成人午夜伦在线观看| 亚洲精品一区二区三区在线观看| 国产成人精品www牛牛影视| 亚洲日本一区二区| 欧美一区二视频| 成人av在线播放网址| 亚洲激情av在线| 久久尤物电影视频在线观看| 99久久免费视频.com| 日本网站在线观看一区二区三区 | 欧美色视频在线| 美日韩黄色大片| 国产精品成人网| 欧美一区三区二区| 99久久免费国产| 精品在线一区二区| 中文字幕字幕中文在线中不卡视频| 欧美亚洲动漫精品| 国产乱子伦视频一区二区三区| 亚洲日本电影在线| 精品国产一区二区在线观看| 色呦呦国产精品| 国产精品一卡二| 一级中文字幕一区二区| 欧美一区二区三区婷婷月色| 色婷婷综合激情| 国产福利一区二区三区视频在线| 一区二区激情视频| 国产精品系列在线| 日韩三级免费观看| 欧美日韩视频专区在线播放| 成人免费毛片嘿嘿连载视频| 秋霞成人午夜伦在线观看| 日韩理论在线观看| 中文字幕二三区不卡| 日韩免费在线观看| 51久久夜色精品国产麻豆| 91国产丝袜在线播放| 成人性视频免费网站| 久久91精品久久久久久秒播| 午夜精品久久久久久| 一区av在线播放| 亚洲视频中文字幕| 国产人妖乱国产精品人妖| 久久婷婷成人综合色| 欧美一区二区三区在线看| 欧美福利视频一区| 制服.丝袜.亚洲.另类.中文| 日韩精品一区二区三区中文不卡| 亚洲人成精品久久久久久| 国产欧美一区二区三区在线看蜜臀| 91精品国产入口在线| 欧美福利一区二区| 欧美丰满少妇xxxxx高潮对白 | 91豆麻精品91久久久久久| jlzzjlzz国产精品久久| 成人精品小蝌蚪| 成人自拍视频在线观看| 成人一级视频在线观看| 成人激情免费视频| 91在线无精精品入口| 色网站国产精品| 欧美日韩久久一区| 欧美不卡在线视频| 2021国产精品久久精品| 国产欧美日韩另类视频免费观看 | 在线观看网站黄不卡| 欧美在线观看视频一区二区| 国产人成亚洲第一网站在线播放| 国产91精品精华液一区二区三区 | 亚洲一区二区三区精品在线| 自拍偷拍亚洲综合| 日韩美女视频19| 亚洲午夜在线观看视频在线| 一区二区三区av电影| 日一区二区三区| 日本麻豆一区二区三区视频| 另类小说综合欧美亚洲| 国产精品小仙女| 一本久道中文字幕精品亚洲嫩| 欧美日韩久久不卡| 久久综合国产精品| 一区二区三区日韩欧美精品| 日韩精品一二区| 成人动漫在线一区| 欧美久久免费观看| 国产欧美日韩激情| 亚洲综合久久久| 国产一区二区三区香蕉| av在线不卡免费看| 欧美大胆人体bbbb| 亚洲综合在线观看视频| 精品国产电影一区二区| 国产欧美综合在线观看第十页| 亚洲欧洲色图综合| 奇米一区二区三区av| 97久久久精品综合88久久| 日韩欧美自拍偷拍| 亚洲精品日日夜夜| 国产一区二区三区日韩| 欧美人妇做爰xxxⅹ性高电影| 国产亚洲一区二区三区在线观看 | 日韩情涩欧美日韩视频|