0

我正处于产品的优化/分析阶段,该产品将在几周内上线,我很惊讶地发现一些漏洞(我相信)并非源自我的代码。其中之一是 iOS 5.1.1 中存在的 strdup/malloc 泄漏,对此我只能等待更新。然而今天我发现了一个新的,我目前正试图查明它在哪里以及如何泄漏。仪器报告:

     Bytes Used         # Leaks Symbol Name
     16 Bytes  100.0%   1       start
     16 Bytes  100.0%   1        main
     16 Bytes  100.0%   1         UIApplicationMain
     16 Bytes  100.0%   1          -[UIApplication _run]
     16 Bytes  100.0%   1           _UIAccessibilityInitialize
     16 Bytes  100.0%   1            -[UIApplication(UIKitApplicationAccessibility) _accessibilityInit]
     16 Bytes  100.0%   1             -[UIApplication(UIKitApplicationAccessibility) _updateAccessibilitySettingsLoader]
     16 Bytes  100.0%   1              _AXSAccessibilityEnabled
     16 Bytes  100.0%   1               _getBooleanPreference
     16 Bytes  100.0%   1                CPCopySharedResourcesPreferencesDomainForDomain
     16 Bytes  100.0%   1                 CPSharedResourcesDirectory
     16 Bytes  100.0%   1                  getpwuid
     16 Bytes  100.0%   1                   si_user_byuid
     16 Bytes  100.0%   1                    search_item_bynumber
     16 Bytes  100.0%   1                     si_user_byuid
     16 Bytes  100.0%   1                      _fsi_get_user
     16 Bytes  100.0%   1                       0x119048
     16 Bytes  100.0%   1                        0x1180e4
     16 Bytes  100.0%   1                         malloc

从我做的一点挖掘中,我发现 getpwuid 是一个由<pwd.h>. 在 Instruments 中双击si_user_byuid会出现“No Source”标志,双击getpwuid会出现 arm7 组件(很抱歉通知您我不熟悉):

+0x0    push                           {r4, r5, r7, lr}
+0x2    add                            r7, sp, #8
+0x4    movw.w                         r5, #18506  ; 0x484a
+0x8    movt.w                         r5, #3265  ; 0xcc1
+0xc    mov                            r4, r0
+0xe    add                            r5, r15
+0x10   ldr                            r0, [r5]
+0x12   cbnz                           getpwuid
+0x14   movw.w                         r0, #47748  ; 0xba84
+0x18   movt.w                         r0, #1  ; 0x1
+0x1c   add                            r0, r15
+0x1e   bl.w                           getpwuid
+0x22   str                            r0, [r5]
+0x24   mov                            r1, r4
+0x26   bl.w                           getpwuid
+0x2a   mov                            r4, r0
+0x2c   movs                           r0, #201  ; 0xc9
+0x2e   mov                            r1, r4
+0x30   bl.w                           getpwuid
+0x34   movs                           r0, #0  ; 0x0
+0x36   cmp                            r4, #0  ; 0x0
+0x38   it                             ne
+0x3a   addne.w                        r0, r4, #28  ; 0x1c
+0x3e   pop                            {r4, r5, r7, pc}

所以:

  • 有没有人见过这个 ?
  • 会不会是假阳性?
  • 会不会仅限于 iOS 5.1.1 ?
4

1 回答 1

2

这是整个事情的来源,从getpwuid. 快速浏览一下,似乎有一些缓存正在进行,所以除非泄漏很大,否则我不会太担心。

于 2012-06-22T17:10:39.090 回答