fanzeyi 发表于 2011-12-5 17:28:57

FluffOS 的 MySQL 问题求帮忙@@

本帖最后由 fanzeyi 于 2011-12-5 05:51 PM 编辑

嘛…… 开始研究 FluffOS @@ 然后想试试用下 MySQL ...
编译过程参照 http://wiki.desolation.org/MUD_D ... _to_MudOS.2FFluffOS 这里.. 嗯

然后在这里 http://lpmuds.net/smf/index.php?topic=634.0 找到了一个样例程序.. 然后随便下了个lima的 lib 写了个mysql命令.. 调用 db_connect 嗯..

先是一直出 Database security violation attempted 错误.. 然后查源码查到 packages/db.c 的 valid_database 函数..

    if (ret && (ret == (svalue_t *)-1 || (ret->type == T_STRING || (ret->type == T_NUMBER && ret->u.number))))
      return ret;

   error("Database security violation attempted\n");// 这一行
}
嗯.. 不太熟悉 MySQL 的 C @.@ 求解..

还有个问题就是, 在 db.c 文件中的 f_db_connect 的定义是 void f_db_connect (void), 但是在LPC中调用的时候是 db_connect(server, db, username)

通过 grep 找到:

$ grep -lr "db_connect" .
./ChangeLog.alpha
./efun_defs.c
./obj/interpret.o
./obj/db.o
./obj/lex.o
./driver
./efunctions.h
./packages/db.c
./packages/packages.a
./packages/db_spec.c
./driver.old
./opc.h
./efun_protos.h
./func_spec.cpp



这些文件都看了下.. 应该是一个从LPC函数向C函数映射的东西.. 但是纠结于参数表..

还有就是用gdb调试的时候找到一个变量 sp .. 没有找到定义的地方.. @@ 这几个问题 求解

    switch (st_num_arg) {
      case 4: type   = (sp - (args++))->u.number;
      case 3: user   = (sp - (args++))->u.string;
      case 2: database = (sp - (args++))->u.string;
      case 1: host   = (sp - (args++))->u.string;
    }


以及就是 没有找到哪里是用来提供密码的 ..
=========================================

update:

(gdb) p st_num_arg
$6 = 3
(gdb) p user
$7 = 0x8149554 ""
(gdb) p host
$8 = 0x8149554 ""
(gdb) p database
$9 = 0x8149554 ""


刚刚发贴的时候感觉这个 sp 就是LPC调用时候的参数表。。 st_num_arg 表示调用时的参数数量.. 很奇怪在gdb里面发现我传进去的参数全都变成 空字符串 了.. 继续研究
=========================

继续 update ...

好吧我明白为什么我的参数表都是 "" 了.. 我调用错函数了... 函数名太像不能怪我 TAT.. 还是在纠结 password .. 准备自己改下 db_connect 这个函数..

rothsdad 发表于 2011-12-5 17:35:45

是饭团吗? 我是roth, 最近超级忙,很久没有上gtalk了.

在钻研FluffOS啊,有空我看看呵,先mark一下.

fanzeyi 发表于 2011-12-5 17:36:40

回复 2# rothsdad


    是啊@@ 我只是无聊玩玩 不算钻研...

fanzeyi 发表于 2011-12-5 17:41:44

回复 4# huacuoh


    @@ 我的目标是当 wiz 不是机器人@@

jason 发表于 2011-12-5 17:42:12

嘛…… 开始研究 FluffOS @@ 然后想试试用下 MySQL ...
编译过程参照这里.. 嗯

然后在这里找到了一 ...
fanzeyi 发表于 2011-12-5 05:28 PM http://pkuxkx.com/forum/images/common/back.gif


    你的lib里是否实现valid_database这个函数了。

fanzeyi 发表于 2011-12-5 17:45:42

回复 6# jason


    这个是使用 FluffOS 里面的 valid_database 函数吧.. 我给 error 那一行注释掉之后就能向后执行了不过后面就是段错误了.. @@

jason 发表于 2011-12-5 18:05:32

valid_database函数是lib要实现的,在fluffos调用任何mysql函数前,会从lib里调用valid_database,这个函数负责返回用户名和密码,也负责做权限检查。比如只有admin才可以用数据库。
不实现这个函数,mysql是不能用的

fanzeyi 发表于 2011-12-5 18:08:00

valid_database函数是lib要实现的,在fluffos调用任何mysql函数前,会从lib里调用valid_database,这个函数 ...
jason 发表于 2011-12-5 06:05 PM http://pkuxkx.com/forum/images/common/back.gif


    明白了!! 我去实现一个去.. 感谢~
页: [1]
查看完整版本: FluffOS 的 MySQL 问题求帮忙@@