小编lun*_*man的帖子

我可以向现有的共享对象添加库refence吗?

我有一个系统"fsimage.so"需要mkdirp,它恰好存在于libgen.so中.但fsimage.so不知道这一点.例如:

# ldd /usr/lib/python2.4/vendor-packages/fsimage.so
    libfsimage.so.1.0 =>     /usr/lib/libfsimage.so.1.0
    libxml2.so.2 =>  /lib/libxml2.so.2
    libgcc_s.so.1 =>         /usr/sfw/lib/libgcc_s.so.1
    libpthread.so.1 =>       /lib/libpthread.so.1
    libz.so.1 =>     /lib/libz.so.1
    libm.so.2 =>     /lib/libm.so.2
    libsocket.so.1 =>        /lib/libsocket.so.1
    libnsl.so.1 =>   /lib/libnsl.so.1
    libc.so.1 =>     /lib/libc.so.1
    libmp.so.2 =>    /lib/libmp.so.2
    libmd.so.1 =>    /lib/libmd.so.1

# ./test
Traceback (most recent call last):
  File "./test", line 26, in ?
    import fsimage
ImportError: ld.so.1: isapython2.4: fatal: relocation error: file /usr/lib/python2.4/vendor-packages/fsimage.so: symbol mkdirp: referenced symbol not found

# LD_PRELOAD=/usr/lib/libgen.so ./test
Usage: ./test
Run Code Online (Sandbox Code Playgroud)

当然,如果我有源等,我可以简单地再次链接它,并添加"-lgen",它将添加libgen.so作为依赖.

但作为hackery的练习,说我没有任何资源,只是想添加fsimage.so还需要加载libgen.so.使用elfedit/objcopy等,这是不可能的?我不认为我可以使用"ld"来使用.so作为输入,并用额外的库写一个新的.so?

# elfdump /usr/lib/python2.4/vendor-packages/fsimage.so|grep NEEDED
   [0]  NEEDED            0x5187 …
Run Code Online (Sandbox Code Playgroud)

unix shared-libraries elf dynamic-linking

11
推荐指数
2
解决办法
4023
查看次数

Chrome:JavaScript window.open可以保存

想象一下用HTML和JavaScript编写的FTP客户端.这部分有效.但如果用户可以"将列表"复制到剪贴板中,那就太好了.事实证明,剪贴板的东西在JS中并不那么容易(此外,列表可能很大).因此,最好是使用生成的列表弹出一个窗口,然后用户可以选择Copy'Paste,或将页面保存到磁盘.

目前我这样做:

    my_window = window.open("", "Copy List");
    my_window.document.write('<pre>\n'+string+'</pre>');
    my_window.document.close();

哪个有效.我得到一个新选项卡,我在"字符串"中生成的列表很好地显示.

但Chrome会禁用/删除"保存页面"选项.如果用户可以保存页面(html或txt),那将是很好的.打开窗口/标签并让它们保存内容需要什么魔力?

由于我们使用WebSockets(key1/key2),因此仅适用于Chrome,无需其他浏览器.

javascript google-chrome

8
推荐指数
1
解决办法
1793
查看次数

来自 Linux 内核的 CCM-AES

我需要与 Solaris 加密机制 SUN_CKM_AES_CCM 兼容。在 Linux 中,我相信我应该设置一个 AEAD 请求来获取“ccm(aes)”机械。Linux Crypto 的文档似乎相当糟糕,最好的例子似乎是 tcrypt.c 测试和内核源代码。

在 Solaris 上,我对 512 字节的块进行了测试加密,其中包含 16 字节的 hmac 和 12 字节的 iv。这需要保持不变,希望结果是相同的。

但是,我认为应该有效的方法无效;

   struct crypto_aead *tfm = NULL;
   struct aead_request *req;
   unsigned char key[16] = {
    0x5c, 0x95, 0x64, 0x42, 0x00, 0x82, 0x1c, 0x9e,
    0xd4, 0xac, 0x01, 0x83, 0xc4, 0x9c, 0x14, 0x97
   };
  unsigned int ivsize;
  int ret;
  struct scatterlist plaintext[1];
  struct scatterlist ciphertext[1];
  struct scatterlist hmactext[1];
  unsigned char *plaindata = NULL;
  unsigned char *cipherdata …
Run Code Online (Sandbox Code Playgroud)

c linux kernel cryptography aes

5
推荐指数
1
解决办法
2637
查看次数

Darwin内核磁盘设备通过磁盘仲裁

所以我将最新的ZFS移植到OSX(github/osx.zfs),然后添加了ZVOL,因为它是我想要的东西.现在纯粹的BSD内核方面似乎确实有效,但我遇到了Apple特定集成的问题.我只是错过了一块拼图.

我创建新的虚拟磁盘(ZVOLs)类似于其他Darwin内核例如,通过定义bdevswcdevsw并调用bdevsw_addcdevsw_add_with_bdev.从这里可以看出:create/dev/zfs,它是主要的ZFS节点并处理所有特定的ioctl.然后在此处创建 ZVOL虚拟磁盘节点create/dev/disk_POOL_name

(我曾尝试命名dev的节点作为disk3rdisk3它没有任何区别).

我处理了我收到的大多数ioctl newfs_msdos newfs_hfs newfs_udf,这里处理ioctl

所以,基本上,它创建了BSD/dev/entries,我可以newfs我的虚拟磁盘,我可以挂载它,使用它.从Unix POV,它似乎作为磁盘工作.

但不是在OSX中.它不会显示在"diskutil list"中,也不会显示在GUI Disk Utility中.显然,我需要在内核中做一些其他事情来考虑它.或者,这是我应该在用户地区做的事情吗?

# ./zpool.sh create -f BOOM ~/pool-image.bin 
# ./cmd.sh zfs create -V 50M -o volblocksize=4096 BOOM/vol
# ls -l /dev/*disk*
brw-r-----  1 root      operator    1,   3 Apr  9 01:48 disk0s2
brw-r-----  1 root      operator    1,   2 Apr  9 01:48 disk0s1
brw-r-----  1 root      operator    1,   0 Apr …
Run Code Online (Sandbox Code Playgroud)

kernel zfs darwin disk device

5
推荐指数
0
解决办法
226
查看次数