Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
aircrack-ng: Fix 32-bit build
  • Loading branch information
ryandesign committed Jun 4, 2018
1 parent b7185d5 commit 384410a
Show file tree
Hide file tree
Showing 2 changed files with 217 additions and 3 deletions.
5 changes: 2 additions & 3 deletions security/aircrack-ng/Portfile
Expand Up @@ -8,9 +8,7 @@ categories security
license GPL-2+ BSD OpenSSL
platforms darwin
maintainers {ryandesign @ryandesign} openmaintainer

# https://github.com/aircrack-ng/aircrack-ng/issues/1850
supported_archs x86_64
supported_archs i386 x86_64

description Aircrack-ng is the next generation of aircrack with lots of new features

Expand Down Expand Up @@ -43,6 +41,7 @@ depends_lib port:libpcap \

patchfiles-append aircrack_ng_pcap.m4.patch
patchfiles-append aircrack_ng_mac.m4.patch
patchfiles-append sha1-sse2.S.patch

# No configure script in tarball.
configure.cmd ./autogen.sh
Expand Down
215 changes: 215 additions & 0 deletions security/aircrack-ng/files/sha1-sse2.S.patch
@@ -0,0 +1,215 @@
Fix assembly on 32-bit macOS.
https://github.com/aircrack-ng/aircrack-ng/issues/1850
https://github.com/aircrack-ng/aircrack-ng/pull/1853
--- src/sha1-sse2.S.orig
+++ src/sha1-sse2.S
@@ -31,34 +31,47 @@
#endif

#if defined(USE_PIC)
-#define PRELOAD(x)
-#define MANGLE(x) x(%rip)
-#define INIT_PIC()
-#define END_PIC()
+#define PRELOAD(x,f)
+#define MANGLE(x,f) x(%rip)
+#define INIT_PIC(f)
+#define END_PIC(f)
#else
#ifdef __PIC__

#ifdef __x86_64__
-#define PRELOAD(x) movq x@GOTPCREL(%rip), %rbx;
-#define MANGLE(x) (%rbx)
-#define INIT_PIC() pushq %rbx
-#define END_PIC() popq %rbx
+#define PRELOAD(x,f) movq x@GOTPCREL(%rip), %rbx;
+#define MANGLE(x,f) (%rbx)
+#define INIT_PIC(f) pushq %rbx
+#define END_PIC(f) popq %rbx
+#else
+
+#if __APPLE__
+#define PRELOAD(x,f) leal x-L0## f ##$pb(%ebx), %esi;
+#define MANGLE(x,f) (%esi)
+#define INIT_PIC(x) \
+ push %ebx; \
+ call L0## x ##$pb; \
+ L0## x ##$pb:; \
+ pop %ebx;
+#define END_PIC(x) pop %ebx
#else
#undef __i686 /* gcc builtin define gets in our way */
-#define PRELOAD(x)
-#define MANGLE(x) x ## @GOTOFF(%ebx)
-#define INIT_PIC() \
+#define PRELOAD(x,f)
+#define MANGLE(x,f) x ## @GOTOFF(%ebx)
+#define INIT_PIC(f) \
call __i686.get_pc_thunk.bx ; \
addl $_GLOBAL_OFFSET_TABLE_, %ebx
-#define END_PIC()
+#define END_PIC(f)
+#endif
+
#endif

#else

-#define PRELOAD(x)
-#define MANGLE(x) x
-#define INIT_PIC()
-#define END_PIC()
+#define PRELOAD(x,f)
+#define MANGLE(x,f) x
+#define INIT_PIC(f)
+#define END_PIC(f)

#endif
#endif
@@ -196,13 +209,13 @@ const_00ff:
paddd tmp2, e; \
movdqa b, tmp2; \
pslld $30, b; \
- paddd MANGLE(k), e; \
+ paddd MANGLE(k,shasse2_data), e; \
psrld $2, tmp2; \
por tmp2, b; \
movdqa (data*16)(edx_rsi), tmp1; \
movdqa tmp1, tmp2; \
- pand MANGLE(const_ff00), tmp1; \
- pand MANGLE(const_00ff), tmp2; \
+ pand MANGLE(const_ff00,shasse2_data), tmp1; \
+ pand MANGLE(const_00ff,shasse2_data), tmp2; \
psrld $8, tmp1; \
pslld $8, tmp2; \
por tmp2, tmp1; \
@@ -224,16 +237,16 @@ const_00ff:
paddd tmp2, e; \
movdqa b, tmp2; \
pslld $30, b; \
- PRELOAD(k) \
- paddd MANGLE(k), e; \
+ PRELOAD(k,shasse2_data) \
+ paddd MANGLE(k,shasse2_data), e; \
psrld $2, tmp2; \
por tmp2, b; \
movdqa (data*16)(edx_rsi), tmp1; \
movdqa tmp1, tmp2; \
- PRELOAD(const_ff00) \
- pand MANGLE(const_ff00), tmp1; \
- PRELOAD(const_00ff) \
- pand MANGLE(const_00ff), tmp2; \
+ PRELOAD(const_ff00,shasse2_data) \
+ pand MANGLE(const_ff00,shasse2_data), tmp1; \
+ PRELOAD(const_00ff,shasse2_data) \
+ pand MANGLE(const_00ff,shasse2_data), tmp2; \
psrld $8, tmp1; \
pslld $8, tmp2; \
por tmp2, tmp1; \
@@ -267,7 +280,7 @@ const_00ff:
paddd tmp2, e; \
movdqa b, tmp2; \
pslld $30, b; \
- paddd MANGLE(k), e; \
+ paddd MANGLE(k,shasse2_data), e; \
psrld $2, tmp2; \
por tmp2, b;
#else
@@ -292,8 +305,8 @@ const_00ff:
paddd tmp2, e; \
movdqa b, tmp2; \
pslld $30, b; \
- PRELOAD(k) \
- paddd MANGLE(k), e; \
+ PRELOAD(k,shasse2_data) \
+ paddd MANGLE(k,shasse2_data), e; \
psrld $2, tmp2; \
por tmp2, b;
#endif
@@ -304,17 +317,17 @@ const_00ff:
shasse2_init:
_shasse2_init:

- INIT_PIC()
- PRELOAD(const_init_a)
- movdqa MANGLE(const_init_a), ctxa
- PRELOAD(const_init_b)
- movdqa MANGLE(const_init_b), ctxb
- PRELOAD(const_init_c)
- movdqa MANGLE(const_init_c), ctxc
- PRELOAD(const_init_d)
- movdqa MANGLE(const_init_d), ctxd
- PRELOAD(const_init_e)
- movdqa MANGLE(const_init_e), ctxe
+ INIT_PIC(shasse2_init)
+ PRELOAD(const_init_a,shasse2_init)
+ movdqa MANGLE(const_init_a,shasse2_init), ctxa
+ PRELOAD(const_init_b,shasse2_init)
+ movdqa MANGLE(const_init_b,shasse2_init), ctxb
+ PRELOAD(const_init_c,shasse2_init)
+ movdqa MANGLE(const_init_c,shasse2_init), ctxc
+ PRELOAD(const_init_d,shasse2_init)
+ movdqa MANGLE(const_init_d,shasse2_init), ctxd
+ PRELOAD(const_init_e,shasse2_init)
+ movdqa MANGLE(const_init_e,shasse2_init), ctxe

movdqa ctxa, 0(eax_rdi)
movdqa ctxb, 16(eax_rdi)
@@ -331,21 +344,21 @@ _shasse2_init:
shasse2_ends:
_shasse2_ends:

- INIT_PIC()
+ INIT_PIC(shasse2_ends)
movdqa 0(eax_rdi), ctxa
movdqa 16(eax_rdi), ctxb
movdqa 32(eax_rdi), ctxc
movdqa 48(eax_rdi), ctxd
movdqa 64(eax_rdi), ctxe

- PRELOAD(const_ff00)
- movdqa MANGLE(const_ff00), tmp3
+ PRELOAD(const_ff00,shasse2_ends)
+ movdqa MANGLE(const_ff00,shasse2_ends), tmp3
movdqa ctxa, tmp1
movdqa ctxb, tmp2
pand tmp3, ctxa
pand tmp3, ctxb
- PRELOAD(const_00ff)
- movdqa MANGLE(const_00ff), tmp3
+ PRELOAD(const_00ff,shasse2_ends)
+ movdqa MANGLE(const_00ff,shasse2_ends), tmp3
pand tmp3, tmp1
pand tmp3, tmp2
psrld $8, ctxa
@@ -365,16 +378,16 @@ _shasse2_ends:
movdqa ctxa, 0(edx_rsi)
movdqa ctxb, 16(edx_rsi)

- PRELOAD(const_ff00)
- movdqa MANGLE(const_ff00), tmp5
+ PRELOAD(const_ff00,shasse2_ends)
+ movdqa MANGLE(const_ff00,shasse2_ends), tmp5
movdqa ctxc, tmp1
movdqa ctxd, tmp2
movdqa ctxe, tmp3
pand tmp5, ctxc
pand tmp5, ctxd
pand tmp5, ctxe
- PRELOAD(const_00ff)
- movdqa MANGLE(const_00ff), tmp5
+ PRELOAD(const_00ff,shasse2_ends)
+ movdqa MANGLE(const_00ff,shasse2_ends), tmp5
pand tmp5, tmp1
pand tmp5, tmp2
pand tmp5, tmp3
@@ -414,7 +427,7 @@ _shasse2_ends:
shasse2_data:
_shasse2_data:

- INIT_PIC()
+ INIT_PIC(shasse2_data)
movdqa 0(eax_rdi), ctxa
movdqa 16(eax_rdi), ctxb
movdqa 32(eax_rdi), ctxc

0 comments on commit 384410a

Please sign in to comment.