@@ -87,23 +87,16 @@ private void addCommand(MachODylibCommand cmd) throws IOException {
8787 var newBuffer = ByteBuffer .allocate (cmd .cmdSize );
8888 newBuffer .order (buffer .order ());
8989 cmd .put (newBuffer );
90+ assert newBuffer .position () == cmd .cmdSize ;
9091 newBuffer .position (0 );
91- loadCommands .add (MachOLoadCommand .get (newBuffer ));
92+ var newCmd = MachOLoadCommand .get (newBuffer );
93+ loadCommands .add (newCmd );
94+ assert newCmd .cmdSize == cmd .cmdSize ;
9295 mh .nCmds += 1 ;
9396 mh .sizeOfCmds += cmd .cmdSize ;
9497 emptySpace -= cmd .cmdSize ;
9598 }
9699
97- private void removeCodeSignature () {
98- for (int i = 0 ; i < loadCommands .size (); ++i ) {
99- var cmd = loadCommands .get (i );
100- if (cmd .cmd == MachOLoadCommand .LC_CODE_SIGNATURE ) {
101- removeCommand (cmd );
102- LOGGER .fine (() -> String .format ("Removing code LC_CODE_SIGNATURE. New empty space is %d" , emptySpace ));
103- }
104- }
105- }
106-
107100 private void removeId () {
108101 for (int i = 0 ; i < loadCommands .size (); ++i ) {
109102 var cmd = loadCommands .get (i );
@@ -128,7 +121,6 @@ private void removeLoad(String oldName) {
128121
129122 @ Override
130123 public void setId (String newId ) throws IOException {
131- removeCodeSignature ();
132124 removeId ();
133125
134126 var newCmd = new MachODylibCommand (MachODylibCommand .LC_ID_DYLIB , MachODylibCommand .SIZE , new byte [0 ], MachODylibCommand .SIZE , 0 , 0 , 0 );
@@ -140,7 +132,6 @@ public void setId(String newId) throws IOException {
140132
141133 @ Override
142134 public void changeOrAddDependency (String oldName , String newName ) throws IOException {
143- removeCodeSignature ();
144135 removeLoad (oldName );
145136
146137 var newCmd = new MachODylibCommand (MachODylibCommand .LC_LOAD_DYLIB , MachODylibCommand .SIZE , new byte [0 ], MachODylibCommand .SIZE , 0 , 0 , 0 );
@@ -154,9 +145,14 @@ public void changeOrAddDependency(String oldName, String newName) throws IOExcep
154145 public void write (TruffleFile copy ) throws IOException , InterruptedException {
155146 buffer .position (0 );
156147 mh .put (buffer );
148+ assert buffer .position () == MachOHeader .SIZE64 ;
157149 for (var cmd : loadCommands ) {
158150 cmd .put (buffer );
159151 }
152+ assert buffer .position () == MachOHeader .SIZE64 + mh .sizeOfCmds ;
153+ for (int i = 0 ; i < emptySpace ; i ++) {
154+ buffer .put ((byte )0 );
155+ }
160156
161157 try (var os = copy .newOutputStream (StandardOpenOption .CREATE , StandardOpenOption .TRUNCATE_EXISTING , StandardOpenOption .WRITE )) {
162158 os .write (buffer .array ());
0 commit comments