pcc added a comment.

This causes us to reject the following (reduced from AOSP):

  int sprintf(char* __s, const char* __fmt, ...)
      __attribute__((__format__(printf, 2, 3))) ;
  int sprintf(char* dest, const char* format)
      __attribute__((overloadable))
      __attribute__((enable_if(((__builtin_object_size(((dest)), (1))) != 
((unsigned long) -1) && (__builtin_object_size(((dest)), (1))) < 
(__builtin_strlen(format))), "format string will always overflow destination 
buffer")))
  
      __attribute__((unavailable("format string will always overflow 
destination buffer")));
  
  void f() {
    unsigned char number_buffer[26] = {0};
    sprintf((char *)number_buffer, "null");
  }

It doesn't seem like we ought to be rejecting this case. Can you please take a 
look?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D92892/new/

https://reviews.llvm.org/D92892

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to