@@ -230,38 +230,38 @@ bool CompareTransform::transformCmps(Module &M, const bool processStrcmp,
230
230
if (callInst->getCallingConv () != llvm::CallingConv::C) continue ;
231
231
StringRef FuncName = Callee->getName ();
232
232
isStrcmp &=
233
- (!FuncName.compare (" strcmp" ) || !FuncName.compare (" xmlStrcmp" ) ||
233
+ (!FuncName.compare (" strcmp" ) /* || !FuncName.compare("xmlStrcmp") ||
234
234
!FuncName.compare("xmlStrEqual") ||
235
235
!FuncName.compare("curl_strequal") ||
236
236
!FuncName.compare("strcsequal") ||
237
- !FuncName.compare (" g_strcmp0" ));
237
+ !FuncName.compare("g_strcmp0")*/ );
238
238
isMemcmp &=
239
239
(!FuncName.compare (" memcmp" ) || !FuncName.compare (" bcmp" ) ||
240
240
!FuncName.compare (" CRYPTO_memcmp" ) ||
241
241
!FuncName.compare (" OPENSSL_memcmp" ) ||
242
242
!FuncName.compare (" memcmp_const_time" ) ||
243
243
!FuncName.compare (" memcmpct" ));
244
- isStrncmp &= (!FuncName.compare (" strncmp" ) ||
244
+ isStrncmp &= (!FuncName.compare (" strncmp" )/* ||
245
245
!FuncName.compare("curl_strnequal") ||
246
- !FuncName.compare (" xmlStrncmp" ));
246
+ !FuncName.compare("xmlStrncmp")*/ );
247
247
isStrcasecmp &= (!FuncName.compare (" strcasecmp" ) ||
248
248
!FuncName.compare (" stricmp" ) ||
249
249
!FuncName.compare (" ap_cstr_casecmp" ) ||
250
250
!FuncName.compare (" OPENSSL_strcasecmp" ) ||
251
- !FuncName.compare (" xmlStrcasecmp" ) ||
251
+ /* !FuncName.compare("xmlStrcasecmp") ||
252
252
!FuncName.compare("g_strcasecmp") ||
253
253
!FuncName.compare("g_ascii_strcasecmp") ||
254
254
!FuncName.compare("Curl_strcasecompare") ||
255
- !FuncName.compare (" Curl_safe_strcasecompare" ) ||
255
+ !FuncName.compare("Curl_safe_strcasecompare") ||*/
256
256
!FuncName.compare (" cmsstrcasecmp" ));
257
257
isStrncasecmp &= (!FuncName.compare (" strncasecmp" ) ||
258
258
!FuncName.compare (" strnicmp" ) ||
259
259
!FuncName.compare (" ap_cstr_casecmpn" ) ||
260
- !FuncName.compare (" OPENSSL_strncasecmp" ) ||
260
+ !FuncName.compare (" OPENSSL_strncasecmp" ) /* ||
261
261
!FuncName.compare("xmlStrncasecmp") ||
262
262
!FuncName.compare("g_ascii_strncasecmp") ||
263
263
!FuncName.compare("Curl_strncasecompare") ||
264
- !FuncName.compare (" g_strncasecmp" ));
264
+ !FuncName.compare("g_strncasecmp")*/ );
265
265
isIntMemcpy &= !FuncName.compare (" llvm.memcpy.p0i8.p0i8.i64" );
266
266
267
267
if (!isStrcmp && !isMemcmp && !isStrncmp && !isStrcasecmp &&
@@ -465,8 +465,19 @@ bool CompareTransform::transformCmps(Module &M, const bool processStrcmp,
465
465
bool isCaseInsensitive = false ;
466
466
bool needs_null = false ;
467
467
bool success_is_one = false ;
468
+ bool nullCheck = false ;
468
469
Function *Callee = callInst->getCalledFunction ();
469
470
471
+ fprintf (stderr, " %s - %s - %s\n " ,
472
+ callInst->getParent ()
473
+ ->getParent ()
474
+ ->getParent ()
475
+ ->getName ()
476
+ .str ()
477
+ .c_str (),
478
+ callInst->getParent ()->getParent ()->getName ().str ().c_str (),
479
+ Callee ? Callee->getName ().str ().c_str () : " NULL" );
480
+
470
481
if (Callee) {
471
482
472
483
if (!Callee->getName ().compare (" memcmp" ) ||
@@ -520,6 +531,11 @@ bool CompareTransform::transformCmps(Module &M, const bool processStrcmp,
520
531
}
521
532
522
533
if (!isSizedcmp) needs_null = true ;
534
+ if (Callee->getName ().startswith (" g_" ) ||
535
+ Callee->getName ().startswith (" curl_" ) ||
536
+ Callee->getName ().startswith (" Curl_" ) ||
537
+ Callee->getName ().startswith (" xml" ))
538
+ nullCheck = true ;
523
539
524
540
Value *sizedValue = isSizedcmp ? callInst->getArgOperand (2 ) : NULL ;
525
541
bool isConstSized = sizedValue && isa<ConstantInt>(sizedValue);
@@ -604,8 +620,10 @@ bool CompareTransform::transformCmps(Module &M, const bool processStrcmp,
604
620
/* split before the call instruction */
605
621
BasicBlock *bb = callInst->getParent ();
606
622
BasicBlock *end_bb = bb->splitBasicBlock (BasicBlock::iterator (callInst));
607
-
608
623
BasicBlock *next_lenchk_bb = NULL ;
624
+
625
+ if (nullCheck) { fprintf (stderr, " TODO: null check\n " ); }
626
+
609
627
if (isSizedcmp && !isConstSized) {
610
628
611
629
next_lenchk_bb =
0 commit comments