/*
 * Copyright ©2026 Soham Pardeshi. All rights reserved.
 * Permission is hereby granted to students registered for University of
 * Washington CSE 333 for use solely during Summer Quarter 2026 for
 * purposes of the course. No other use, copying, distribution, or
 * modification is permitted without prior written consent. Copyrights
 * for third-party components of this work must be honored. Instructors
 * interested in reusing these course materials should contact the author.
 */

// INTENTIONAL BUG (lecture demo): writes through a pointer to a string
// literal. The literal "hello" lives in read-only memory (.rodata), so the
// write faults (SIGSEGV). Reading through s is fine.
// Fix: char s[] = "hello";  // a writable copy on the stack
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char* argv[]) {
  char* s = "hello";  // points into .rodata
  printf("%s\n", s);  // reading is fine
  s[0] = 'H';         // writing is NOT -> SIGSEGV
  return EXIT_SUCCESS;
}