Code Monkey home page Code Monkey logo

fleurix's People

Contributors

chobits avatar flaneur2020 avatar silverrainz avatar xuchunyang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fleurix's Issues

a seg fault bug

after having added one printn() in init.c, a seg fault was triggered.

int main(int argc, char **argv){
    uint ret, pid;
    if (fork()==0) {
        exec("/bin/sh", NULL);
    }
    printn(1, 10); //seg fault
    while(1) {
        pid = wait(&ret);
        //printf("exited - pid %d => %d\n", pid, ret);
    }
}

macros in unistd.h is considered buggy

比如

#define _SYS1(T0, FN, T1)                       \
    T0 FN(T1 p1){                               \
        register int r;                         \
        asm volatile(                           \
            "int $0x80"                         \
            :"=a"(r),                           \
             "=b"(errno)                        \
            :"a"(NR_##FN),                      \
             "b"((int)p1)                       \
        );                                      \
        if (r<0){                               \
            errno = -r;                         \
            return -1;                          \
        }                                       \
        return r;                               \
    }

这是个不统一的地方,而且没必要通过ebx来设置errno。errno放在负数里返回就行了

王猫猫?

感觉好NB啊,不知道王猫猫有这种才能

sys_open中vm_verify(path,..)的安全问题.

  1. vm_verify虽然验证了path,但是sys_open却没有检测vm_verify返回值,相当于sys_open没有做vm_verify
    (这个bugfix比较容易)
  2. vm_verify(path, strlen(path)+1)有个安全问题,就是在实际vm_verify检测前,strlen(path)总是会访问path指向的内存,
    如果path是恶意构造的地址就会出现安全问题,虽然我拿path=0x0来尝试, 仍然工作:/

对于问题2.可能的修复方法:
a. 我发现linux 0.11是没有做安全检测就直接访问path的 0_0
b. linux 2.6.11里面是 使用strncpy_from_user(page, pathname, PATH_MAX_LEN) 这里PATH_MAX_LEN默认是4KB,
并且strncpy_from_user兼具检测和拷贝的功能.

ld链接出错

出错信息:
ld bin/libsys/entry.o bin/libsys/libsys.o bin/libsys/string.o bin/libsys/printf.o bin/usr/test_fork.o -o bin/usr/test_fork -e c -T tool/user.ld
tool/user.ld:28: undefined symbol `_start' referenced in expression

删除 user.ld中这句: c = _start; 可以链接通过.

c = _start; 这个是什么特殊作用? c符号是?

src/kern/entry.S: replace Ruby with NASM macro

Here is the ruby code to create abundant and repeating NASM code from src/kern/entry.S:

 NINT = 128
 0.upto(NINT) do |i|
   puts %{
     _hwint#{i}:
       #{'push  dword 0' if i!=17 and (i<8 or i>14)}
       push  dword #{i}
       jmp   _hwint_common_stub
   }
 end

 # generate the vector table
 puts %{
 ; vector table
 [section .data]
 [global  _hwint]

 _hwint:
 }
 0.upto(NINT) do |i|
   puts "  dd _hwint#{i}"
 end

Is it difficult to implement this with nasm macro?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.