Tu segundo intento es casi perfecto, solamente te falto añadirle paréntesis (prioridad de operadores

).
Código C:
Ver original#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void change_value(char ***buffer)
{
*buffer
= malloc(2 * sizeof(char *));
}
int main(int argc, char **argv)
{
char **buffer = NULL;
change_value(&buffer);
printf("%s, %s\n", buffer
[0], buffer
[1]); // <- Segmentation fault
return 0;
}