这篇教程C++ validaddr函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中validaddr函数的典型用法代码示例。如果您正苦于以下问题:C++ validaddr函数的具体用法?C++ validaddr怎么用?C++ validaddr使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了validaddr函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: sys_statlongsys_stat(ulong *arg){ Chan *c; uint l; uchar buf[128]; /* old DIRLEN plus a little should be plenty */ char strs[128], *name; Dir d; char old[] = "old stat system call - recompile"; validaddr(arg[1], 116, 1); validaddr(arg[0], 1, 0); c = namec((char*)arg[0], Aaccess, 0, 0); if(waserror()){ cclose(c); nexterror(); } l = devtab[c->type]->stat(c, buf, sizeof buf); /* buf contains a new stat buf; convert to old. yuck. */ if(l <= BIT16SZ) /* buffer too small; time to face reality */ error(old); name = pathlast(c->path); if(name) l = dirsetname(name, strlen(name), buf, l, sizeof buf); l = convM2D(buf, l, &d, strs); if(l == 0) error(old); packoldstat((uchar*)arg[1], &d); poperror(); cclose(c); return 0;}
开发者ID:Akheon23,项目名称:nix-os,代码行数:33,
示例2: syswstatvoidsyswstat(Ar0* ar0, ...){ Chan *c; char *aname; uint8_t *p; usize n; va_list list; va_start(list, ar0); /* * int wstat(char* name, uchar* edir, int nedir); * should really be * usize wstat(char* name, uchar* edir, usize nedir); * but returning an unsigned is probably too * radical. */ aname = va_arg(list, char*); p = va_arg(list, uint8_t*); n = va_arg(list, usize); p = validaddr(p, n, 0); validstat(p, n); c = namec(validaddr(aname, 1, 0), Aaccess, 0, 0); va_end(list); ar0->l = wstat(c, p, n);}
开发者ID:Shamar,项目名称:harvey,代码行数:28,
示例3: findblockint findblock(int addr,int size,int begin) { int i,j,idx,ptr; ptr=addr; if (begin) { idx=OFF1+addr-PTR; while(1) { while(((!validaddr(ptr))||lookup[idx])&&(idx<OFF2)) { idx+=4; ptr+=4; } if (idx>=OFF2) return 0; if (freeblock(idx,size)) return idx; idx+=4; ptr+=4; } } else { idx=addr-PTR; while(1) { while(((!validaddr(ptr))||lookup[idx])&&(idx>OFF1)) { idx-=4; ptr-=4; } if (idx<OFF1) return 0; if (freeblock(idx,size)) return idx; idx-=4; ptr-=4; } }}
开发者ID:offensive-security,项目名称:exploit-database,代码行数:29,
示例4: findsblockint findsblock(int sptr) { int optr,sidx,size; size=gfirst ? 0x2c:0x04; optr=sptr; while(sidx=findblock(sptr,size,1)) { sptr=IDX2PTR(sidx); if (gfirst) { if (validaddr(sptr)) { ALLOCBLOCK(sidx,size); break; } else sptr=optr; } else { if (validaddr(sptr-0x18)&&freeblock(sidx-0x18,4)&&freeblock(sidx+0x0c,4)&& freeblock(sidx+0x10,4)&&freeblock(sidx-0x0e,4)) { ALLOCBLOCK(sidx-0x18,4); ALLOCBLOCK(sidx-0x0e,2); ALLOCBLOCK(sidx,4); ALLOCBLOCK(sidx+0x0c,4); ALLOCBLOCK(sidx+0x10,4); sidx-=0x18; break; } else sptr=optr; } sptr+=4; optr=sptr; } gfirst=0; return sidx;}
开发者ID:offensive-security,项目名称:exploit-database,代码行数:30,
示例5: sysunmountlongsysunmount(ulong *arg){ Chan *cmount, *cmounted; cmounted = 0; validaddr(arg[1], 1, 0); cmount = namec((char *)arg[1], Amount, 0, 0); if(waserror()) { cclose(cmount); if(cmounted) cclose(cmounted); nexterror(); } if(arg[0]) { /* * This has to be namec(..., Aopen, ...) because * if arg[0] is something like /srv/cs or /fd/0, * opening it is the only way to get at the real * Chan underneath. */ validaddr(arg[0], 1, 0); cmounted = namec((char*)arg[0], Aopen, OREAD, 0); } cunmount(cmount, cmounted); poperror(); cclose(cmount); if(cmounted) cclose(cmounted); return 0;}
开发者ID:Akheon23,项目名称:nix-os,代码行数:33,
示例6: syssemaltvoidsyssemalt(Ar0 *ar0, ...){ Proc *up = externup(); int **sl; int i, *np, ns; Segment *sg; Sem *ksl[16]; va_list list; va_start(list, ar0); /* * void semalt(int*[], int); */ ar0->i = -1; sl = va_arg(list, int**); ns = va_arg(list, int); sl = validaddr(sl, ns * sizeof(int*), 1); if(ns > nelem(ksl)) panic("syssemalt: bug: too many semaphores in alt"); for(i = 0; i < ns; i++){ np = sl[i]; np = validaddr(np, sizeof(int), 1); evenaddr(PTR2UINT(np)); if((sg = seg(up, PTR2UINT(np), 0)) == nil) error(Ebadarg); ksl[i] = segmksem(sg, np); } ar0->i = semalt(ksl, ns); va_end(list);}
开发者ID:Shamar,项目名称:harvey,代码行数:31,
示例7: syswstatlongsyswstat(ulong *arg){ Chan *c; uint l; l = arg[2]; validaddr(arg[1], l, 0); validstat((uchar*)arg[1], l); validaddr(arg[0], 1, 0); c = namec((char*)arg[0], Aaccess, 0, 0); return wstat(c, (uchar*)arg[1], l);}
开发者ID:Akheon23,项目名称:nix-os,代码行数:13,
示例8: sysunmountvoidsysunmount(Ar0* ar0, ...){ Proc *up = externup(); char *name, *old; Chan *cmount, *cmounted; va_list list; va_start(list, ar0); /* * int unmount(char* name, char* old); */ name = va_arg(list, char*); old = va_arg(list, char*); cmount = namec(validaddr(old, 1, 0), Amount, 0, 0); va_end(list); cmounted = nil; if(name != nil) { if(waserror()) { cclose(cmount); nexterror(); } /* * This has to be namec(..., Aopen, ...) because * if arg[0] is something like /srv/cs or /fd/0, * opening it is the only way to get at the real * Chan underneath. */ cmounted = namec(validaddr(name, 1, 0), Aopen, OREAD, 0); poperror(); } if(waserror()) { cclose(cmount); if(cmounted != nil) cclose(cmounted); nexterror(); } cunmount(cmount, cmounted); cclose(cmount); if(cmounted != nil) cclose(cmounted); poperror(); ar0->i = 0;}
开发者ID:Shamar,项目名称:harvey,代码行数:49,
示例9: sysziofreevoidsysziofree(Ar0 *ar0, ...){ Mach *m = machp(); Zio *io; int nio, i; Segment *s; va_list list; va_start(list, ar0); /* * zfree(Zio io[], int nio); */ io = va_arg(list, Zio*); nio = va_arg(list, int); va_end(list); io = validaddr(io, sizeof io[0] * nio, 1); for(i = 0; i < nio; i++){ s = seg(m->externup, PTR2UINT(io[i].data), 1); if(s == nil) error("invalid address in zio"); if((s->type&SG_ZIO) == 0){ qunlock(&s->lk); error("segment is not a zero-copy segment"); } zputaddr(s, PTR2UINT(io[i].data)); qunlock(&s->lk); io[i].data = nil; io[i].size = 0; }}
开发者ID:npe9,项目名称:harvey,代码行数:31,
示例10: sysseeklongsysseek(ulong *arg){ validaddr(arg[0], BY2V, 1); sseek(arg); return 0;}
开发者ID:Akheon23,项目名称:nix-os,代码行数:7,
示例11: sysopenvoidsysopen(Ar0* ar0, ...){ Proc *up = externup(); va_list list; char *aname; int fd, omode; Chan *c; /* * int open(char* file, int omode); */ va_start(list, ar0); aname = va_arg(list, char*); omode = va_arg(list, int); va_end(list); openmode(omode); /* error check only */ c = nil; if(waserror()){ if(c != nil) cclose(c); nexterror(); } aname = validaddr(aname, 1, 0); c = namec(aname, Aopen, omode, 0); fd = newfd(c); if(fd < 0) error(Enofd); poperror(); ar0->i = fd;}
开发者ID:Shamar,项目名称:harvey,代码行数:33,
示例12: sysfversionlongsysfversion(ulong *arg){ char *vers; uint arglen, m, msize; Chan *c; msize = arg[1]; vers = (char*)arg[2]; arglen = arg[3]; validaddr(arg[2], arglen, 1); /* check there's a NUL in the version string */ if(arglen==0 || memchr(vers, 0, arglen)==0) error(Ebadarg); c = fdtochan(arg[0], ORDWR, 0, 1); if(waserror()){ cclose(c); nexterror(); } m = mntversion(c, vers, msize, arglen); cclose(c); poperror(); return m;}
开发者ID:CoryXie,项目名称:nix-os,代码行数:26,
示例13: sysfwstatvoidsysfwstat(Ar0* ar0, ...){ Chan *c; int fd; uint8_t *p; usize n; va_list list; va_start(list, ar0); /* * int fwstat(int fd, uchar* edir, int nedir); * should really be * usize wstat(int fd, uchar* edir, usize nedir); * but returning an unsigned is probably too * radical. */ fd = va_arg(list, int); p = va_arg(list, uint8_t*); n = va_arg(list, usize); p = validaddr(p, n, 0); validstat(p, n); c = fdtochan(fd, -1, 1, 1); va_end(list); ar0->l = wstat(c, p, n);}
开发者ID:Shamar,项目名称:harvey,代码行数:28,
示例14: sysfd2pathvoidsysfd2path(Ar0* ar0, ...){ Chan *c; char *buf; int fd; usize nbuf; va_list list; va_start(list, ar0); /* * int fd2path(int fd, char* buf, int nbuf); * should be * int fd2path(int fd, char* buf, usize nbuf); */ fd = va_arg(list, int); buf = va_arg(list, char*); nbuf = va_arg(list, usize); va_end(list); buf = validaddr(buf, nbuf, 1); c = fdtochan(fd, -1, 0, 1); snprint(buf, nbuf, "%s", chanpath(c)); cclose(c); ar0->i = 0;}
开发者ID:Shamar,项目名称:harvey,代码行数:27,
示例15: syscreatevoidsyscreate(Ar0* ar0, ...){ Proc *up = externup(); char *aname; int fd, omode, perm; Chan *c; va_list list; va_start(list, ar0); /* * int create(char* file, int omode, uint32_t perm); * should be * int create(char* file, int omode, int perm); */ aname = va_arg(list, char*); omode = va_arg(list, int); perm = va_arg(list, int); va_end(list); openmode(omode & ~OEXCL); /* error check only; OEXCL okay here */ c = nil; if(waserror()) { if(c != nil) cclose(c); nexterror(); } c = namec(validaddr(aname, 1, 0), Acreate, omode, perm); fd = newfd(c); if(fd < 0) error(Enofd); poperror(); ar0->i = fd;}
开发者ID:Shamar,项目名称:harvey,代码行数:35,
示例16: sysfversionvoidsysfversion(Ar0* ar0, va_list list){ Chan *c; char *version; int fd; u32int msize; usize nversion; /* * int fversion(int fd, int bufsize, char *version, int nversion); * should be * usize fversion(int fd, u32int msize, char *version, usize nversion); */ fd = va_arg(list, int); msize = va_arg(list, u32int); version = va_arg(list, char*); nversion = va_arg(list, usize); version = validaddr(version, nversion, 1); /* check there's a NUL in the version string */ if(nversion == 0 || memchr(version, 0, nversion) == nil) error(Ebadarg); c = fdtochan(fd, ORDWR, 0, 1); if(waserror()){ cclose(c); nexterror(); } ar0->u = mntversion(c, msize, version, nversion); cclose(c); poperror();}
开发者ID:0intro,项目名称:enhanced-plan9,代码行数:34,
示例17: sysfversionuintptrsysfversion(va_list list){ uint msize, arglen; char *vers; Chan *c; int fd; fd = va_arg(list, int); msize = va_arg(list, uint); vers = va_arg(list, char*); arglen = va_arg(list, uint); validaddr((uintptr)vers, arglen, 1); /* check there's a NUL in the version string */ if(arglen==0 || memchr(vers, 0, arglen)==0) error(Ebadarg); c = fdtochan(fd, ORDWR, 0, 1); if(waserror()){ cclose(c); nexterror(); } msize = mntversion(c, vers, msize, arglen); cclose(c); poperror(); return msize;}
开发者ID:Nurb432,项目名称:plan9front,代码行数:26,
示例18: sysremovelongsysremove(ulong *arg){ Chan *c; validaddr(arg[0], 1, 0); c = namec((char*)arg[0], Aremove, 0, 0); /* * Removing mount points is disallowed to avoid surprises * (which should be removed: the mount point or the mounted Chan?). */ if(c->ismtpt){ cclose(c); error(Eismtpt); } if(waserror()){ c->type = 0; /* see below */ cclose(c); nexterror(); } devtab[c->type]->remove(c); /* * Remove clunks the fid, but we need to recover the Chan * so fake it up. rootclose() is known to be a nop. */ c->type = 0; poperror(); cclose(c); return 0;}
开发者ID:Akheon23,项目名称:nix-os,代码行数:30,
示例19: sysexitsuintptrsysexits(va_list list){ char *status; char *inval = "invalid exit string"; char buf[ERRMAX]; status = va_arg(list, char*); if(status != nil){ if(waserror()) status = inval; else{ validaddr((uintptr)status, 1, 0); if(vmemchr(status, 0, ERRMAX) == nil){ memmove(buf, status, ERRMAX); buf[ERRMAX-1] = 0; status = buf; } poperror(); } } pexit(status, 1); return 0; /* not reached */}
开发者ID:srk-cmu,项目名称:9problems,代码行数:25,
示例20: sys_waituintptrsys_wait(va_list list){ ulong pid; Waitmsg w; OWaitmsg *ow; ow = va_arg(list, OWaitmsg*); if(ow == nil) pid = pwait(nil); else { validaddr((uintptr)ow, sizeof(OWaitmsg), 1); evenaddr((uintptr)ow); pid = pwait(&w); } if(ow != nil){ readnum(0, ow->pid, NUMSIZE, w.pid, NUMSIZE); readnum(0, ow->time+TUser*NUMSIZE, NUMSIZE, w.time[TUser], NUMSIZE); readnum(0, ow->time+TSys*NUMSIZE, NUMSIZE, w.time[TSys], NUMSIZE); readnum(0, ow->time+TReal*NUMSIZE, NUMSIZE, w.time[TReal], NUMSIZE); strncpy(ow->msg, w.msg, sizeof(ow->msg)-1); ow->msg[sizeof(ow->msg)-1] = '/0'; } return pid;}
开发者ID:srk-cmu,项目名称:9problems,代码行数:25,
示例21: sysexitsint32_tsysexits(uint32_t *arg){ char *status; char *inval = "invalid exit string"; char buf[ERRMAX]; status = (char*)arg[0]; if(status){ if(waserror()) status = inval; else{ validaddr((uint32_t)status, 1, 0); if(vmemchr(status, 0, ERRMAX) == 0){ memmove(buf, status, ERRMAX); buf[ERRMAX-1] = 0; status = buf; } } poperror(); } pexit(status, 1); return 0; /* not reached */}
开发者ID:npe9,项目名称:harvey,代码行数:25,
示例22: sysnotifylongsysnotify(ulong *arg){ if(arg[0] != 0) validaddr(arg[0], sizeof(ulong), 0); up->notify = (int(*)(void*, char*))(arg[0]); return 0;}
开发者ID:hckjsnzf,项目名称:selflib,代码行数:8,
示例23: sysseeklongsysseek(ulong *arg){ validaddr(arg[0], sizeof(vlong), 1); validalign(arg[0], sizeof(vlong)); sseek(arg); return 0;}
开发者ID:carriercomm,项目名称:plan9-gpl,代码行数:8,
示例24: fsavestatic voidfsave(Ureg*, int, void *d, Internal*, Internal*){ validaddr(d, 108, 1); memmove(d, &I387, 108); I387.control = 0x037F; I387.status = 0; I387.tag = 0;}
开发者ID:8l,项目名称:inferno,代码行数:9,
示例25: loadi16static voidloadi16(void *s, Internal *d){ Word w; validaddr(s, 2, 0); w = *(short*)s; fpiw2i(d, &w);}
开发者ID:8l,项目名称:inferno,代码行数:9,
示例26: findfblockint findfblock(int fptr,int i1,int i2,int i3) { int fidx,optr; optr=fptr; while(fidx=findblock(fptr,4,0)) { fptr=IDX2PTR(fidx); if (validaddr(fptr-i2)&&validaddr(fptr-i2-i3)&&freeblock(fidx-i3,4)&& freeblock(fidx-i2-i3,4)&&freeblock(fidx-i2-i3+i1,4)) { ALLOCBLOCK(fidx,4); ALLOCBLOCK(fidx-i3,4); ALLOCBLOCK(fidx-i2-i3,4); ALLOCBLOCK(fidx-i2-i3+i1,4); break; } else fptr=optr; fptr-=4; optr=fptr; } return fidx;}
开发者ID:offensive-security,项目名称:exploit-database,代码行数:18,
示例27: _sysstatlong_sysstat(char *name, void *buf, long n){ Chan *c; uint l; l = n; validaddr(buf, l, 1); validaddr(name, 1, 0); c = namec(name, Aaccess, 0, 0); if(waserror()){ cclose(c); nexterror(); } l = devtab[c->type]->stat(c, buf, l); poperror(); cclose(c); return l;}
开发者ID:99years,项目名称:plan9,代码行数:19,
示例28: sysnotifyuintptrsysnotify(va_list list){ int (*f)(void*, char*); f = va_arg(list, void*); if(f != nil) validaddr((uintptr)f, sizeof(void*), 0); up->notify = f; return 0;}
开发者ID:srk-cmu,项目名称:9problems,代码行数:10,
示例29: sys_fsessionlongsys_fsession(ulong *arg){ /* deprecated; backwards compatibility only */ if(arg[2] == 0) error(Ebadarg); validaddr(arg[1], arg[2], 1); ((uchar*)arg[1])[0] = '/0'; return 0;}
开发者ID:CoryXie,项目名称:nix-os,代码行数:11,
示例30: storei16static voidstorei16(Internal s, void *d){ Word w; validaddr(d, 2, 1); fpii2w(&w, &s); if((short)w != w) ; /* overflow */ *(short*)d = w;}
开发者ID:8l,项目名称:inferno,代码行数:11,
注:本文中的validaddr函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ validateAddress函数代码示例 C++ valid_user_regs函数代码示例 |